代码之家  ›  专栏  ›  技术社区  ›  Terje

为什么RouteLink生成友好URL而ActionLink不生成?

  •  7
  • Terje  · 技术社区  · 16 年前

    考虑以下路线

    routes.MapRoute("Routename1",
        "{someEnum}/SpecificAction/{id}/{stringId}",
        new { controller = "MyController", id = (int?)null, stringId= (string)null, action = "SpecificAction" },
        new { someEnum= "(EnumVal1|EnumVal2)" }
    );
    

    考虑以下两种链接方式:

    <%=Html.RouteLink("Click me","Routename1", new { id = 32, stringId = "Yatzy" })%> 
    <%=Html.ActionLink("Click me", "SpecificAction", "EnumVal1", new { id = 32, stringId = "Yatsy" }, null)%>
    

    RouteLink生成正确的url,即/EnumVal1/SpecificAction/32/Yatzy

    ActionLink生成一个类似于/EnumVal1/SpecificAction/32?stringId=Yatzy的url

    为什么会这样?有人能给我解释一下吗。

    1 回复  |  直到 16 年前
        1
  •  4
  •   Craig Stuntz    16 年前

    RouteLink can only ever use the one route you specify . ActionLink 将使用第一条匹配路线,无论它是否是您想要的路线。您的两个示例可能匹配不同的路线。

    Phil Haack's routing debugger