我想知道是否可以在 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();
方法 stub 是这样的:
public static void RenderUI(this ViewPage viewPage)
因此,为了重用最多的代码,我想将对 this.RenderUI() 的调用拉到它自己的 ViewPage 中,然后将其包含在某些 ViewPage 中。这是一个毛茸茸的情况,听起来没有必要,但有很多代码返工,否则就需要完成。有谁知道这是否可以实现?
最佳答案
使用 RenderAction()
而不是 RenderPartial()
在主视图中呈现您的 subview 。这允许您为每个 subview 保留您的 Controller 和 View ,并将每个 Controller / subview 组合的输出“注入(inject)”到任何主视图中,在主视图中您选择的位置。
这种安排应该可以减轻管理每个 View 和 subview 的一些复杂性。这种方法让人想起传统 ASP.NET 或 SharePoint 中的“Web 部件”。这是一种更加模块化的方法,可提供更好的可重用性。
关于c# - 在 ViewPage 中呈现的 ASP.NET MVC ViewPage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2292851/