Asp.net mvc ASP.NET MVC与复杂模型

Asp.net mvc ASP.NET MVC与复杂模型,asp.net-mvc,Asp.net Mvc,在使用WebForms多年后,我开始转向MVC,我对复杂的页面和MVC的工作原理有一个疑问 我知道控制器创建了一个模型,该模型被传递到一个视图,然后显示给用户 如果我们以示例Microsoft主页为例(如本文底部所示),并假设以黄色突出显示的每个区域都是单独的数据库驱动区域,这些区域在主页上组合并通过调用home controller/index方法提取 我的问题是,下面介绍的页面如何构造必要的模型,然后将其传递回视图进行渲染 我的第一个选择是创建包含每个小节(和每个小节内容)的复杂ViewMo

在使用WebForms多年后,我开始转向MVC,我对复杂的页面和MVC的工作原理有一个疑问

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

如果我们以示例Microsoft主页为例(如本文底部所示),并假设以黄色突出显示的每个区域都是单独的数据库驱动区域,这些区域在主页上组合并通过调用home controller/index方法提取

我的问题是,下面介绍的页面如何构造必要的模型,然后将其传递回视图进行渲染

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

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

也许PartialViews/ViewComponent是我可以使用的另一个选项

在WebForm世界中,我会在代码隐藏页面中使用用户控件,每个控件都有自己的逻辑,但显然我不能在这里这样做(尽管ViewComponents看起来很相似)

因此,对于一个复杂的页面,生成一个或多个模型和视图/视图以保持一切整洁的最佳实践是什么

谢谢你的建议:)


此数据仅显示。在一个复杂模型中引入数据,并从该模型传递到另一个局部视图

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

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


同样,单独处理post数据。Post数据应该是最小的,并且不要为Post数据的几个字段发布整个主页模型。使用jQuery ajax实现这一点。

您提到的所有选项都是合适的,但哪一个最合适取决于多个因素