ActionLink带参数后?代替 /

时间:2009-11-20 20:53:22

标签: asp.net-mvc

请举例说明如何使用reditection生成ActionLink:http://localhost/Articles?View=xx而不是http://localhost/Articles/View/xx? 我这样做如下(它给我第一种重定向):

<%= Html.ActionLink("View this article", "View", "Articles", new { id = Model.Item.Slug }, null)%>

2 个答案:

答案 0 :(得分:2)

只需确保id参数未映射到Global.asax中的Route。只需将id更改为其他类似recordId的内容,并将操作签名更改为使用recordId而不是id。

答案 1 :(得分:1)

Global.asax中的默认路由设置为匹配/ {controller} / {action} / {id}。当您使用上面的代码创建操作链接时,您告诉MVC路由设置控制器为“文章”的路由,操作为“查看”,ID为“xxx”。

您要查找的网址是/ Articles?View = xx。在这种情况下,您说您没有遵循/ {controller} / {action} / {id}范例。您应该在global.asax中设置静态路由,如下所示:

routes.MapRoute("Articles", //the name of the route
  "Articles", // the URL you want to match
  new { controller = "Articles", action = "Index" });

但是,请记住,路线是按照设置的顺序进行测试的,因此您需要将其放在列表顶部附近。您还需要测试其他路线以确保它们不受影响。

您的操作链接的代码将是

Html.ActionLink("View this article", "Index", "Articles", new { view = "xx" }, null)