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. Это более модульный подход, который обеспечивает лучшее повторное использование.

Другие вопросы по тегам