ASP.NET MVC - 与经典MVC项目不同的要求

时间:2016-01-20 16:01:58

标签: asp.net asp.net-mvc

我来自于从事ASP.NET WebForms和其他Web开发框架的工作。 最近我想进入ASP.NET MVC。我读了一本专业书,并且有一些我无法理解的缺失链接。

当许多情况不完全适合时,如何使用MVC。我的意思是什么? 例如,在WebForms中,您希望构建一个具有所有元素的页面,这与您的“真实”模型无关。例如,只需使用页面来显示小型聊天或某种广告,以及一些不代表数据库中数据的控制器。

在我理解的MVC中,整个概念是构建与其模型具有特定关系的页面,然后从那里流出一切。 因此,对于商店(大多数MVC项目的例子),它适合伟大的,一些产品,购物车......

我的问题是,如果您拥有不需要特定型号的所有类型的页面,您如何使用MVC?这会失去使用ASP.NET MVC的全部意义吗?

1 个答案:

答案 0 :(得分:1)

对于你所谈论的大部分内容都有子动作(MVC 5和之前的版本)或视图组件(MVC 6)。例如,您可以创建一个渲染聊天控件的子操作/视图组件,然后您只需在视图/布局中调用它,您的视图仍然只是担心它处理的实际模型。

您还可以使用partials来呈现大部分静态HTML的部分。例如,如果该聊天控件只是HTML / JavaScript,则可以将其包含在部分中,然后在视图/布局中调用它。子动作/视图组件与此上下文中的部分组件之间的主要区别仅在于您是否需要先将某些内容传递给视图服务器端。实际上,如果您的控件需要它自己的模型,请使用子操作/视图组件,否则,部分就足够了。

您还可以扩展HtmlHelper以添加“控件”。这在需要完成某些服务器端处理的情况下非常有用,但它不需要像命中数据库那样需要由控制器处理的事情。可以想象它在子动作/视图组件和部分组件之间有一种中途。

最后,尽管混淆是可以理解的,但由于Entity Framework和MVC之间的紧密集成,这两者实际上是完全可以互换的。换句话说,您的视图的“模型”根本不需要涉及数据库。该模型只是一个类实例,它可以来自任何地方,无论是数据库,Web服务,还是仅在操作中静态实例化。