【发布时间】:2009-05-04 20:18:54
【问题描述】:
假设我在“主页/索引”页面上,我想转到页面 MyOtherController/Index/1
我该怎么做?
我试试:
<%= Html.ActionLink("Test", "Index", "MyOtherController", new { id=item.Id }) %>
我是否还必须在 Global.aspx 文件中添加路由?
【问题讨论】:
标签: asp.net-mvc
假设我在“主页/索引”页面上,我想转到页面 MyOtherController/Index/1
我该怎么做?
我试试:
<%= Html.ActionLink("Test", "Index", "MyOtherController", new { id=item.Id }) %>
我是否还必须在 Global.aspx 文件中添加路由?
【问题讨论】:
标签: asp.net-mvc
一种选择是在路由值列表中指定控制器的名称:
<%= Html.ActionLink("Test", "Index"
, new { controller = "MyOtherController", id = item.Id }) %>
另一种方法是将ActionLink 的重载与htmlAttributes = null 一起使用:
<%= Html.ActionLink("Test", "Index"
, "MyOtherController", new { id = item.Id }, null) %>
在这种情况下,ASP.NET MVC 模板中的默认路由负责路由。
【讨论】:
我不相信 ActionLink 具有与该特定签名匹配的重载。您需要在路由值之后添加“null”以找到匹配的值(对于 htmlAttributes)。 Ole 的解决方案会更干净,所以这确实是一个偏好问题。它还有助于提高可读性,因此您不必猜测每个参数是否是链接文本、动作/控制器等。
【讨论】: