从其他控制器呈现部分视图

有没有办法在我的控制器A视图内呈现从其他控制器B的局部视图?

编辑:我写了一个局部视图,只有两个控制器,我不想复制到两个视图文件夹。
我希望在发生某些事情后每次渲染视图时都会显示局部视图。

  1. 您可以通过将控制器放入Views / Shared文件夹来共享控制器之间的视图。 然后每个控制器可以按名称渲染该视图。
  2. 您可以使用Html.Partial()在当前视图内渲染局部视图(可以在(1)中的控制器之间共享Html.Partial()
  3. 您可以使用Html.Action()在不同的控制器上调用一个动作,并在当前视图内渲染结果。
  4. 页面渲染后,您可以使用AJAX从不同的控制器加载部分视图。
 @Html.Partial("~/Views/ControllerB/Index.cshtml") 

是,

 return PartialView("/path/view.cshtml"); 

你只需要制定path部分。

或者,你可以把部分视图的视图/共享然后只是返回:

 return PartialView("view.cshtml"); 

只是一个旁注,因为我发现这个线程search相同的问题,但答案不工作:在果园CMS模块,你不能使用由Pittfall发布的整洁的解决scheme ,你必须使用相对path返回部分视图。 比方说你有一个控制器

 Controllers/SiteController.cs 

并且您想要返回部分视图

 Shared/MessageList/Items 

然后在你的行动方法,你需要写

 return PartialView("../Shared/MessageList/Items"); 
 @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>