我想知道是否可以在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中。这是一个毛茸茸的情况,听起来没必要,但是需要做很多代码返工。有谁知道这是否可以实现?
答案 0 :(得分:1)
使用RenderAction()
代替RenderPartial()
在主视图中渲染子视图。这允许您保留每个子视图的控制器和视图,并将每个控制器/子视图组合的输出“注入”到您在主视图中选择的位置的任何主视图中。
这种安排应该可以减轻管理每个视图和子视图的一些复杂性。这种方法让人想起传统ASP.NET或SharePoint中的“Web部件”。它是一种更加模块化的方法,可提供更好的可重用性。