如果我想将视图分解为更小的子视图,我应该在 ASP.NET MVC 中创建啥项目?

Posted

技术标签:

【中文标题】如果我想将视图分解为更小的子视图,我应该在 ASP.NET MVC 中创建啥项目?【英文标题】:What item should I create in ASP.NET MVC if I want to break a view into smaller sub-views?如果我想将视图分解为更小的子视图,我应该在 ASP.NET MVC 中创建什么项目? 【发布时间】:2009-06-12 19:33:43 【问题描述】:

我正在构建一个 ASP.NET MVC 应用程序,并且正在使用母版页。在这个母版页上,我想通过为“Tabs”、“Header”和“Footer”创建一个单独的文件来进一步分解。

我应该创建什么样的视图来封装这些内容以帮助消除母版页中的混乱?另外,如何在主视图的正确位置引用它们,以便正确呈现它们?

有几种不同类型的选项可用于为 MVC 创建视图/内容视图/用户控件等,我需要知道哪种选项最适合此任务以及如何使用它。

【问题讨论】:

MVC中有用户控件?? 【参考方案1】:

如果您使用的是 WebForms 视图,那么您有 3 个选项:

部分视图/用户控制

使用 html.RenderPartial(我认为这是目前在 ASP.NET MVC 1.0 中创建选项卡的最佳方法)。您的标记将如下所示:

<% Html.RenderPartial(ViewData["TabName"], ViewData["TabData"]); %>

嵌套母版页

Site.master 和 ContentPlaceHolders 用于内容、页眉、侧边栏、页脚...... Tabs.master 和 ContentPlaceHolder 用于 &lt;asp:Content ContentPlaceHolderID="Content" &gt; 中的选项卡 很多 Tab1.aspx ... TabN.aspx 用于选项卡。

HtmlHelper 扩展

您可以使用(我认为创建选项卡的错误方式)这样的东西:

<% if(ViewData["TabName"] = "Tab1")  %>
    <%= Html.Tab1() %>
<%  else if(ViewData["TabName"] = "Tab2")  %>
    <%= Html.Tab2() %>
<%  else ...
... 
...
...

【讨论】:

【参考方案2】:

您是否已经考虑过用户控件/部分视图??

编辑:如果它只是 html,您可以编写 html 文件并使用辅助方法进行渲染。

【讨论】:

它们是同一个吗?部分视图对我来说不是一个选项,我读到人们建议不要使用用户控件。所以,我真的在寻找更多的意见。 来自blog.wekeroad.com/blog/aspnet-mvc-using-usercontrols-usefully 和bradwilson.typepad.com/blog/2008/08/partial-renderi.html。我认为他们是 95%,如果不是 100% 相同 为什么这里没有部分视图选项?

以上是关于如果我想将视图分解为更小的子视图,我应该在 ASP.NET MVC 中创建啥项目?的主要内容,如果未能解决你的问题,请参考以下文章

putExtra:我应该如何处理大型数组?数据库或拆分为更小的阵列?

RxSwift - 将序列拆分为更小的序列以连接

SwiftUI:从嵌套视图调用方法

动态规划

iPhone,iOS 8:如何呈现比原始视图控制器更小的 ViewController?

使用 grad 将 PyTorch 张量调整为更小的尺寸