2

我想知道是否可以在 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 中。这是一个棘手的情况,听起来没有必要,但是有很多代码返工需要以其他方式完成。有谁知道这是否可以实现?

4

1 回答 1

1

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

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

于 2010-02-18T22:55:46.817 回答