Просмотр частичного просмотра с другого контроллера
Есть ли способ визуализировать внутри моего представления контроллера 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");