Визуализация частичного вида с другого контроллера
есть ли способ визуализации внутри моего представления контроллера A частичный вид с другого контроллера B?
Edit: я написал частичное представление, которое подходит только для двух контроллеров, и я не хочу копировать его в папку обоих представлений.
Я хочу, чтобы частичное представление отображалось каждый раз, когда представление отображается не после того, как что-то произойдет.
5 ответов:
- вы можете обмениваться представлениями между контроллерами, помещая их в папку Views/Shared. Затем каждый контроллер может отображать это представление по имени.
- вы можете отобразить частичное представление (которое может быть разделено между контроллерами, как в (1)) в текущем представлении с помощью
Html.Partial()
.- можно использовать
Html.Action()
чтобы вызвать действие на другом контроллере и отобразить результаты в текущем представлении.- вы можете использовать AJAX для загрузки частичного представления из другого контроллер после отображения страницы.
да
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");