部分视图中的MVC Action Link

时间:2014-06-25 15:01:37

标签: asp.net-mvc view actionlink

我是MVC的新手,试图了解@Html.ActionLink在部分视图中的工作方式。

背景 - 这里是解决方案的相关部分

Models
  PersonViewModel.cs
Views
  Addresses
    AddressListPartial.cshmtl
  Person
    Details.cshtml

我创建了一个PersonViewModel,其中包含FirstNameLastNameAddress列表。我使用地址表的List脚手架创建了一个局部视图,并在我的视图中添加了以下内容,以便人员在Person/Details页面上显示地址列表:

@Html.Partial("~/Views/Address/AddressListPartial.cshtml", Model.Addresses)

这是正确显示页面上的AddressList,但是,地址列表上的"创建",#34;编辑"等等链接链接到Views/Person/Edit/{id}而不是Views/Address/Edit/{id}

部分查看操作链接:

@Html.ActionLink("Edit", "Edit", new { id=item.AddressID }) |

因此,部分视图继承ActionLink的{​​{1}}文件夹,而不是Person。有没有办法在局部视图中使这些ActionLinks引用地址文件夹/控制器而不是Person?

我尝试了这个,但是如果局部视图不在Views文件夹的子文件夹中,那么这不会起作用:

Address

1 个答案:

答案 0 :(得分:6)

加载页面时,您是否正在从Person加载PersonsController?我不认为ActionLink真正关心它所处的部分视图,而是控制器动作呈现视图的内容。在呈现页面时解析URL的默认约定将返回到同一个控制器。

您可以覆盖该默认值并使用ActionLink的重载之一显式指定控制器:

@Html.ActionLink("Edit", "Edit", "Address", new { id = item.AddressID }, null)

(请注意,最后还有一个额外的null参数。该特定重载还包含HTML属性的对象。您没有使用这些参数,但是there's no overload of this kind without it所以你可以将null传递给它。)