Визуализация частичного вида с другого контроллера


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

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

5 62

5 ответов:

  1. вы можете обмениваться представлениями между контроллерами, помещая их в папку Views/Shared. Затем каждый контроллер может отображать это представление по имени.
  2. вы можете отобразить частичное представление (которое может быть разделено между контроллерами, как в (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 вы не можете использовать изящное решение posted by Pittfall, вы должны использовать относительные пути для возврата частичных представлений. Допустим, у вас есть контроллер

Controllers/SiteController.cs

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

Shared/MessageList/Items

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

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