我们所有人都从.NET 1.1开始使用webform,之前我们没有MVC经验,但我的所有同事都对ASP.NET MVC感兴趣,但没有运气,我们的最终答案是否定的.
因为:
>我们相信尽管您是ASP.NET Guru,但您可以在短时间内构建复杂的应用程序.但是如果你改为ASP.NET MVC,开发时间会花费更长的时间,每个东西都需要使用html helper,没有web控件,还有很多问题,请继续打开带有ASP.NET论坛的Firefox Tab,询问How-To问题.
>我们曾经多次看到人们说MVC提供更好的项目管理,但如果它是一个复杂的网站,我可以想象有百分之百<%=%> TAG在一个页面中,并保持打开控制器以查看要返回的内容,并保持打开模型以查看逻辑.
我可以说,MVC并不坏,但Webform足以应对这项工作.
解决方法
使用MVC,您必须摆脱旧的ASP.NET Forms思考“复杂Web应用程序”的方式,即“我们有多少页面,超过300页!这将是巨大的!”.您可以更改整个应用程序的视图.你从“接下来需要创建的页面”的旧思维转向MVC思考“我们下一步需要实现什么功能”的思维方式.
例如,我自己控制了一个项目,该项目仅在’web’项目中有超过3300个文件(加上11个支持程序集).我正在构建的一件事是MVC将如何将物理文件的数量大幅减少到大约310左右.怎么样?因为我正在离开“这里是一页.这是另一页.”以“这是我想要实现的功能”的思维方式.
通过将页面视为您要完成的功能,您可以开始将该页面的各个部分抽象为常用功能.
MVC可以通过这种思维方式进行大规模扩展,因为现在你有一个模板用于你希望它的外观,你只需要实现另一个“函数”来改变你想要渲染的视图(html)的外观.没有第二页,没有额外的控制等.
现在,正如你所提到的“没有网络控制”:再次,这需要一种不同的思维方式. HtmlHelper用于基本渲染和编码.我使用一个名为MyProjectHelper的抽象类使用相同的概念,它将我的“函数”呈现在页面上(functions = code).
例如,我过去总是为我的DisplayNames创建一个服务器控件.这允许我控制DisplayName的显示方式,特别是切换到Facebook Connect和其他东西.使用MVC,我不再使用“服务器控件”,而是使用viewmodel上的“函数”来呈现该文本:CollegeProjectviewmodel.RenderDisplayName().因为这只是UI层的一部分,所以这将根据需要使用我想要的任何选项呈现Anchor(当然,摘要由CollegeProjectviewmodel继承,它接收“基本”文本呈现).
MVC的强大之处在于不再需要“网页”,而是“功能”或您想要对您的网站做什么的方法.通过改变这种思维方式,您可以使用在控制器上创建的方法进行扩展.它确实加速了大规模的IMO.