如何使用操作链接更改控制器,移动到网站的根目录

时间:2009-08-28 18:02:25

标签: c# asp.net-mvc

我目前正试图以一种我认为在NerdDinner中没有描述的方式使用actionlink助手。

让我们说我在这个页面上

/晚餐/

在该页面上有一份晚餐清单,确定无误并正常工作

现在可以说我想转到网站的新部分,我已经创建了一个新的控制器MenuItemsController

所以我想说我想转到管理菜单项的网站的新部分。

所以去

/ menuitems / 3

会显示与晚餐ID 3相关的所有菜单项。

这也有效。

我遇到问题,链接到每个菜单项页面,因为当我使用actionlink代码时,没有太多修改我得到了这个

dinner1 = link / dinners / menuitems / 3

而不是

晚餐= link / menuitems / 3

我正在尝试的actionlink代码是

<%= Html.ActionLink("Menu Items", "/menuitems", new { id=item.id })%>
你可以看到/那里。这感觉不对。

我不确定这篇文章是否在讨论同样的问题。

how do i have links to root controllers in site.master in asp.net mvc

动作链接对我来说是完全错误的用法,因为它们被直接绑定到我目前所在的控制器中?

如果是这样,对我来说,实现我想做的最好的方法是什么,还会增加链接到创建/编辑/删除方法的复杂性?

2 个答案:

答案 0 :(得分:1)

只需删除斜杠并明确指定控制器和操作:

<%= Html.ActionLink("Menu Items", "Item", "menuitems", 
    new RouteValueDictionary { { "id", item.id } })%>

您没有在示例中提供操作名称,因此我猜到了“项目”。显然,插入正确的操作名称。

如果使用其中一个不带控制器名称的ActionLink重载,则使用当前控制器名称。

我写过an in-depth explanation of routing, ActionLink, and more

答案 1 :(得分:0)

我奇怪地经过一整天的搜索才发现这个页面,

http://devlicio.us/blogs/derik_whittaker/archive/2008/03/06/link-building-101-with-asp-net-mvc.aspx

似乎方法3可能就是我需要的东西,当我回到家时,我会尝试它。