有没有办法在我的控制器视图中呈现 A 来自其他控制器 B 的局部视图?
编辑:我写了一个仅适用于两个控制器的部分视图,我不想将其复制到两个视图文件夹中。
我希望每次呈现视图时都不会显示部分视图。
答案 0 :(得分:77)
Html.Partial()
在当前视图中呈现部分视图(可以在控制器之间共享,如(1)所示)。Html.Action()
在不同的控制器上调用操作,并在当前视图中呈现结果。答案 1 :(得分:44)
@Html.Partial("~/Views/ControllerB/Index.cshtml")
答案 2 :(得分:17)
是的,
return PartialView("/path/view.cshtml");
你只需要弄清楚路径部分。
或者你可以将部分视图放在views / shared中,然后返回:
return PartialView("view.cshtml");
答案 3 :(得分:2)
@model YourModelNamesapce.ModelName
@{
ViewBag.Title = "Edit";
Layout = "~/Views/Shared/_LayoutForPartialViews.cshtml";
}
<table>
<tr>
<td>
@Html.LabelFor(model => model.fieldname)
</td>
<td>
@Html.DisplayFor(model => model.fieldname)
</td>
</tr>
<tr>
<td>@Html.Action("PartialViewAction", "Controller", new { id = Model.id })</td>
</tr>
</table>
答案 4 :(得分:1)
只是旁注,因为我发现这个帖子正在搜索相同的问题,但答案并不起作用:在Orchard CMS模块中,你不能使用Pittfall发布的neat solution,你必须使用相对路径返回部分视图。假设你有一个控制器
Controllers/SiteController.cs
并且您想要返回部分视图
Shared/MessageList/Items
然后在你的动作方法中你需要写
return PartialView("../Shared/MessageList/Items");