ASP.NET MVC ViewPage отображается в ViewPage
Мне интересно, можно ли визуализировать ViewPage внутри ViewPage.
Обычно у вас будет это:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<my_object>"%>
а затем на странице вы можете визуализировать пользовательский элемент управления:
<%Html.RenderPartial("~/Views/Shared/mycontrol.ascx", this.ViewData);%>
Однако я хотел бы визуализировать ViewPage в ViewPage. Причина? Я работаю над очень большим проектом с 10+ разработчиками и уже написал много кода. Уже написан большой кусок, который динамически отображает пользовательский интерфейс, однако существует более 15 методов, которые передают ViewPage.
Другими словами, я вызываю это в ViewPage:
<%this.RenderUI();
И метод заглушки это:
public static void RenderUI(this ViewPage viewPage)
Поэтому для повторного использования большей части кода я хотел бы перетащить вызов this.RenderUI() в свой собственный ViewPage, но затем включить его в некоторые ViewPages. Это сложная ситуация, и это звучит излишне, но есть много переделок кода, которые нужно было бы сделать в противном случае. Кто-нибудь знает, можно ли этого достичь?
1 ответ
Отобразите ваше подпредставление в главном представлении, используя RenderAction()
вместо RenderPartial()
, Это позволяет вам хранить ваш контроллер и просматривать для каждого подпредставления и "вводить" выходные данные каждой комбинации "контроллер / подпредставление" в любое основное представление в выбранном вами месте в главном представлении.
Такое расположение должно облегчить некоторые сложности управления каждым из представлений и подпредставлений. Этот подход напоминает "веб-части" в традиционных ASP.NET или SharePoint. Это более модульный подход, который обеспечивает лучшее повторное использование.