2016-01-20 45 views
-3

我来自致力于ASP.NET WebForms和其他Web开发框架的recenelty。 最近我想进入ASP.NET MVC。我读了一本专业书,还有一些我不明白的链接。ASP.NET MVC - 与传统MVC项目不同的要求

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

在MVC中,据我所知,整个概念是建立与他们的模型特定关系的页面,然后它从那里流动。所以对于一个商店(大多数MVC项目的例子)它适合伟大的,一些产品,购物车...

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

+0

答案是否定的,它不会失去使用ASP.NET MVC的全部观点。阅读更多关于MVC,然后你意识到为什么和如何。顺便说一下,你的问题太广泛了。所以,我正在投票表决它被关闭。 – ataravati

+1

模型不需要模仿你的数据库表结构。如果您有一个包含多个元素的页面,则可以为该混合创建一个模型。 –

+1

另外,如果你能给我们一个你认为不适合MVC模型的“页面”的例子,它会更有帮助。 –

回答

1

对于大多数你正在谈论的有子操作(MVC 5和以前)或视图组件(MVC 6)。例如,您可以创建一个呈现聊天控件的子动作/视图组件,然后您只需在视图/布局中调用该组件,并且您的视图仍然只是担心它处理的实际模型。

您还可以利用partials来渲染大部分静态HTML的部分。例如,如果该聊天控件只是HTML/JavaScript,则可以将其包含在部分内容中,然后在视图/布局中调用该聊天控件。在这种情况下,子动作/视图组件和部分子组件之间的主要区别在于是否需要首先获取视图服务器端并将其传递给视图服务器端。实际上,如果你的控件需要它自己的模型,使用一个子动作/视图组件,否则,部分就可以满足要求。

您还可以扩展HtmlHelper以添加“控件”。这在需要完成一些服务器端处理的情况下很有用,但它不需要像击中数据库那样的事情,这应该由控制器来处理。想想它在儿童行为/视图组件和部分组件之间有一种中间状态。

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

+0

啊!非常感谢克里斯,这让我对事情变得更加清楚。我要测试你的建议!谢谢! –