DLe*_*Leh 2 asp.net-mvc view actionlink
我是MVC的新手,试图弄清楚@Html.ActionLink
部分视图中的工作方式.
背景 - 这是解决方案的相关部分
Models
PersonViewModel.cs
Views
Addresses
AddressListPartial.cshmtl
Person
Details.cshtml
Run Code Online (Sandbox Code Playgroud)
我创建了一个PersonViewModel,其中有FirstName
,LastName
和列表Address
上课.我使用List脚手册为Address表创建了一个局部视图,并在我的视图中添加了以下内容,以便Person显示Person/Details
页面上的地址列表:
@Html.Partial("~/Views/Address/AddressListPartial.cshtml", Model.Addresses)
Run Code Online (Sandbox Code Playgroud)
这是正确显示页面上的AddressList,但是,AddressList上的"创建","编辑"等链接是链接Views/Person/Edit/{id}
而不是Views/Address/Edit/{id}
.
部分视图操作链接:
@Html.ActionLink("Edit", "Edit", new { id=item.AddressID }) |
Run Code Online (Sandbox Code Playgroud)
因此,局部视图继承ActionLink
了Person
而不是文件夹Address
.有没有办法在局部视图中使这些ActionLinks引用地址文件夹/控制器而不是Person?
我试过这个,但是如果局部视图不在Views文件夹中的子文件夹中,那么这将不起作用:
@Html.ActionLink("Edit", "../Address/Edit", new { id=item.AddressID }) |
Run Code Online (Sandbox Code Playgroud)
当加载页面,你加载Person
从PersonsController
吧?我不认为它ActionLink
真正关心它的部分视图,而是控制器动作呈现视图的内容.在呈现页面时解析URL的默认约定将返回到同一个控制器.
您可以覆盖该默认值,并使用以下重载之一显式指定控制器ActionLink
:
@Html.ActionLink("Edit", "Edit", "Address", new { id = item.AddressID }, null)
Run Code Online (Sandbox Code Playgroud)
(注意,最后还有一个额外的null
参数.那个特殊的重载还包括一个HTML属性的对象.你没有使用它们,但是如果没有它就没有这种重载,所以你可以传递null
给它.)
归档时间: |
|
查看次数: |
4781 次 |
最近记录: |