2009-05-04 85 views
3

让另一个控制器说我的页面“首页/索引”上,我想去的页面MyOtherController /索引/ 1Asp.Net MVC呼叫从视图

我怎样才能做到这一点?

我尝试:

<%= Html.ActionLink("Test", "Index", "MyOtherController", new { id=item.Id }) %>

难道我还必须添加在Global.aspx路由文件?

回答

8

一个选项是在routevalues的列表来指定控制器的名称:

<%= 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模板负责路由。

1

我不认为ActionLink具有匹配该特定签名的重载。您需要在路由值之后添加“null”以查找匹配的值(对于htmlAttributes)。奥莱的解决方案会更清洁,但它确实是一个偏好问题。它也将有助于可读性,因此您不必猜测每个参数是否为链接文本,动作/控制器等。