Просмотр частичного просмотра с другого контроллера

Есть ли способ визуализировать внутри моего представления контроллера A частичный вид с другого контроллера B?

Изменить: я написал частичное представление, которое подходит только для двух контроллеров, и я не хочу его копировать в обе их папки представлений.
Я хочу, чтобы частичный вид отображался каждый раз, когда представление отображается не после того, как что-то происходит.

Ответ 1

  • Вы можете обмениваться представлениями между контроллерами, помещая их в папку Views/Shared. Затем каждый контроллер может отобразить это представление по имени.
  • Вы можете отобразить частичный вид (который можно совместно использовать между контроллерами, как в (1)), в текущем виде, используя Html.Partial().
  • Вы можете использовать Html.Action() для вызова действия на другом контроллере и отображения результатов в текущем представлении.
  • Вы можете использовать AJAX для загрузки частичного представления с другого контроллера после отображения страницы.

Ответ 2

@Html.Partial("~/Views/ControllerB/Index.cshtml")

Ответ 3

Да,

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

Вам просто нужно найти часть пути.

В качестве альтернативы вы можете поместить частичный вид в views/shared, а затем просто вернуть:

return PartialView("view.cshtml");

Ответ 4

@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>

Ответ 5

Просто обратите внимание на то, что я нашел эту тему для поиска того же вопроса, но ответы не работали: в модулях Orchard CMS вы не можете использовать опрятное решение Pittfall, вы должны использовать относительные пути для возврата частичных представлений. Допустим, у вас есть контроллер

Controllers/SiteController.cs

и вы хотите вернуть частичный вид

Shared/MessageList/Items

то в ваших методах действий вам нужно написать

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