Asp.Net MVC从视图中调用另一个控制器

时间:2009-05-04 20:18:54

标签: asp.net-mvc

让我说我在页面“主页/索引”,我想转到页面MyOtherController / Index / 1

我该怎么做?

我试试:

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

我是否还必须在Global.aspx文件中添加路由?

2 个答案:

答案 0 :(得分: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 :(得分:1)

我不相信ActionLink有一个匹配特定签名的重载。您需要在路由值之后添加“null”以查找匹配的(对于htmlAttributes)。 Ole的解决方案会更干净,但这确实是一个偏好问题。它还有助于提高可读性,因此您无需猜测每个参数是否为链接文本,操作/控制器等。