我想知道是否有可能在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中,然后将其包含在某些ViewPage中。这是一个多毛的情况,听起来是不必要的,但是否则需要进行大量代码重做。有谁知道这是否可以实现?

最佳答案

使用RenderAction()而不是RenderPartial()在主视图中呈现子视图。这样,您就可以保留每个子视图的控制器和视图,并将每个控制器/子视图组合的输出“注入”到任何主视图中,位于主视图内您选择的位置。

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

关于c# - 在ViewPage中呈现的ASP.NET MVC ViewPage,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2292851/

10-13 03:03