在 ViewPage 中呈现的 ASP.NET MVC ViewPage

发布于 2024-08-22 06:47:00 字数 724 浏览 10 评论 0原文

我想知道是否可以在 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 上。这是一个棘手的情况,听起来没有必要,但否则需要进行大量代码返工。有谁知道这是否可以实现?

I'm wondering if it is possible to render a ViewPage inside of a ViewPage.

Normally, you'd have this:

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

and then in the page you can render a user control:

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

However I'd like to render a ViewPage in a ViewPage. The reason? I'm working on a very large project with 10+ developers and a lot of code already written. A large piece is already written which dynamically renders the UI however there are 15+ methods which pass around a ViewPage.

In other words, I'm calling this in the ViewPage:

<%this.RenderUI();

And the method stub is this:

public static void RenderUI(this ViewPage viewPage)

So in order to reuse the most code, I'd like to pull the call to this.RenderUI() into it's own ViewPage but then include that on some ViewPages. It's a hairy situation and it sounds unnecessary, but there's a lot of code rework that would need to be done otherwise. Does anyone know if this can be achieved?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

远山浅 2024-08-29 06:47:00

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

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

Render your subview in the main view using RenderAction() instead of RenderPartial(). This allows you to keep your controller and view for each subview, and "inject" the output of each controller/subview combination into any main view, in a location of your choosing within the main view.

This arrangement should ease some of the complexity of managing each of the views and subviews. It is an approach reminiscent of the "web parts" in traditional ASP.NET or SharePoint. It is a more modular approach that provides for better reusability.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文