我目前正试图以一种我认为在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
动作链接对我来说是完全错误的用法,因为它们被直接绑定到我目前所在的控制器中?
如果是这样,对我来说,实现我想做的最好的方法是什么,还会增加链接到创建/编辑/删除方法的复杂性?
答案 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可能就是我需要的东西,当我回到家时,我会尝试它。