【问题标题】:ASP.NET MVC and complex modelsASP.NET MVC 和复杂模型
【发布时间】:2017-08-09 13:58:30
【问题描述】:

在使用 WebForms 多年后,我正在转向 MVC,我对复杂页面以及 MVC 的工作原理有疑问

我了解控制器创建了一个模型,该模型传递给视图,然后显示给用户。

如果我们以示例 Microsoft 主页为例(显示在本文底部),并假设以黄色突出显示的每个区域都是单独的数据库驱动区域,它们在主页上组合并通过调用家庭控制器/索引方法。

我的问题是关于如下所示的页面如何构建必要的模型,然后将其传递回视图进行渲染。

我的第一个选择是创建包含每个小节(以及每个小节内容)的复杂 ViewModel 并将其传递回视图,但我认为在复杂页面上这会很快变得混乱。

另一种选择可能是在出现小节的每个地方使用一堆 RenderAction 调用(我不确定这是否正确)。

也许 PartialViews / ViewComponent 可能是我可用的另一个选项。

在 WebForm 世界中,我会在代码隐藏页面中使用具有自己逻辑的 UserControl,但显然我不能在这里执行此操作(尽管 ViewComponents 看起来确实相似)

因此,给定一个复杂的页面,生成一个或多个模型和视图/视图的最佳做法是什么,以保持一切整洁。

感谢您的建议:)

【问题讨论】:

  • 你提到的所有选项都合适,但最好取决于多种因素

标签: asp.net-mvc


【解决方案1】:

此数据仅供显示。将数据引入一个复杂模型并从中传递到其他部分视图。

您还可以在页面加载时加载主要数据 (jumbotron),然后通过 ajax jquery 调用加载其余数据。当您必须向服务器提交表单数据时,请单独处理。

复杂的模型在这里不会变得混乱,因为它们具有不同的仅显示角色。您可以为不同的局部视图创建模型,并将它们作为该类的属性放在主模型中。然后,将这些属性传递给局部视图进行渲染。

同样,单独处理发布数据。帖子数据应该是最少的,不要为少数帖子数据字段发布整个主页模型。为此使用 jQuery ajax。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    相关资源
    最近更新 更多