在ViewPage中呈现的ASP.NET MVC ViewPage

时间:2010-02-18 22:53:49

标签: c# asp.net-mvc renderpartial viewpage

我想知道是否可以在ViewPage中呈现ViewPage。

通常,你有这个:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<my_object>"%>

然后在页面中您可以呈现用户控件:

<%Html.RenderPartial("~/Views/Shared/mycontrol.ascx", this.ViewData);%>

但是我想在ViewPage中呈现ViewPage。原因?我正在开发一个包含10多个开发人员的大型项目,并且已经编写了大量代码。已经编写了一个很大的部分,它动态地呈现UI,但是有15种方法可以传递一个ViewPage。

换句话说,我在ViewPage中调用它:

<%this.RenderUI();

方法存根是这样的:

public static void RenderUI(this ViewPage viewPage)

因此,为了重用大多数代码,我想将调用this.RenderUI()调用到它自己的ViewPage中,然后将其包含在某些ViewPages中。这是一个毛茸茸的情况,听起来没必要,但是需要做很多代码返工。有谁知道这是否可以实现?

1 个答案:

答案 0 :(得分:1)

使用RenderAction()代替RenderPartial()在主视图中渲染子视图。这允许您保留每个子视图的控制器和视图,并将每个控制器/子视图组合的输出“注入”到您在主视图中选择的位置的任何主视图中。

这种安排应该可以减轻管理每个视图和子视图的一些复杂性。这种方法让人想起传统ASP.NET或SharePoint中的“Web部件”。它是一种更加模块化的方法,可提供更好的可重用性。