簡體   English   中英

從其他控制器渲染局部視圖

[英]Render Partial View from other controller

有沒有辦法在我的控制器A視圖中呈現來自其他控制器B的局部視圖?

編輯:我寫了一個僅適用於兩個控制器的局部視圖,我不想將它復制到兩個Views文件夾中。
我希望每次呈現視圖時都不會顯示部分視圖。

  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");

你只需要計算出路徑部分。

或者,您可以將部分視圖放在views / shared中,然后返回:

return PartialView("view.cshtml");
@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>

只是旁注,因為我發現這個線程搜索相同的問題,但答案不起作用:在Orchard CMS模塊中,你不能使用Pittfall發布的整潔解決方案 ,你必須使用相對路徑來返回部分視圖。 假設你有一個控制器

Controllers/SiteController.cs

並且您想要返回局部視圖

Shared/MessageList/Items

然后在你需要寫的動作方法中

return PartialView("../Shared/MessageList/Items");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM