ASP.NET MVC ViewPage отображается в ViewPage - PullRequest
2 голосов
/ 19 февраля 2010

Мне интересно, возможно ли отобразить 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 Ответ

1 голос
/ 19 февраля 2010

Отобразите ваше подпредставление в главном представлении, используя RenderAction() вместо RenderPartial().Это позволяет вам сохранить свой контроллер и просмотреть для каждого подпредставления и «внедрить» выходные данные каждой комбинации «контроллер / подпредставление» в любое основное представление в месте по вашему выбору в главном представлении.

Это расположение должнооблегчить некоторые сложности управления каждым из представлений и подпредставлений.Этот подход напоминает «веб-части» в традиционных ASP.NET или SharePoint.Это более модульный подход, обеспечивающий лучшее повторное использование.

...