2017-08-09 185 views
2

我移动到MVC经过多年使用的WebForms和我有一个复杂的页面问题,MVC是如何工作的ASP.NET MVC和复杂的模型

我明白控制器创建被传递到视图模型,然后显示给用户。

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

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

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

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

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

在WebForm的世界,我会用每一个用户控件与代码隐藏页自己的逻辑,但很明显,我不能做到这一点在这里(虽然ViewComponents似乎类似)

所以,对于一个复杂的页面是什么生成一个或多个模型和视图/视图的最佳实践,以保持一切美好和干净。

谢谢你的建议:)

enter image description here

+0

您提到的所有选项都适用,但最好取决于多种因素 –

回答

1

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

您也可以在页面加载时加载主数据(jumbotron),然后通过ajax jquery调用加载休息。当你必须提交表单数据到服务器时,分别处理。

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

再次,分别处理帖子数据。发布数据应该是最小的,并且不要在发布数据的几个字段中发布整个主页面模型。为此使用jQuery ajax。