2011-12-15 160 views
5

我读过很多问题和文章,指出从ASP.NET Webforms转换为MVC几乎是不可能的。然而我认为我的情况是不同的。我很愚蠢地从一年前开始在Webforms中开展一个项目,但我采取的方法(据我所知)非常类似MVC。我禁用了表单验证,不使用任何回发,使用URL重写以及所有页面更改都是加载ContentPlaceHolders的页面内容的AJAX请求(使用小型黑客,覆盖RenderControl方法)。我还在独立的项目中使用了我自己的ORM和RESTful Service API,并在网站中引用。从ASP.NET WebForms迁移到MVC

现在系统运行得非常好,页面部分刷新正常,并且在进行ajax调用时url被更改,所以当页面刷新时,它看起来完全一样。

现在我刚刚被告知我需要为一个新的大项目学习MVC(但我必须先完成另一个项目),但是我已经做了一些关于该主题的阅读并开始了一些Hello World应用程序,而且似乎ASP.NET MVC的想法与我已经创建的完全一致。

StackOverflow仍建议不要将Webforms应用程序转换为MVC吗?除了最佳实践之外,转换为MVC是否还有其他好处?

+0

您当然可以将WebForms“转换”为MVC,但该过程将涉及大量的复制/粘贴/重写。 – jrummell 2011-12-15 16:02:48

+0

在我看来,“除了最佳实践之外,还有其他任何转换为​​MVC的好处吗?”从这个问题的其余部分是另一个豆类罐头。 – 2011-12-15 16:03:17

+5

如果它的效果很好,请不要重写它。 – Erix 2011-12-15 16:03:46

回答

3

我有一个非常大的和旧的ASP.NET WebForms应用程序(最初是为.NET 1.1编写的!),并且已经使MVC能够并行工作。我一直在使用MVC编写新功能,并将旧的WebForms功能转换为MVC控制器和视图。

我遇到了有关URL授权和在IIS集成模式下运行的一些小问题,但是一旦我理解了这些问题,他们相当容易解决。这几乎不可能?当然不是!

由于我不知道应用程序的大小,范围或性质或任何业务限制,我无法告诉您是否值得您花时间对其进行转换。但是,转向MVC对于简化开发和质量来说是相当有益的(因为它更容易划分和单元测试)。更不用说,我在MVC中编写(或重写)的功能比WebForms等效项更清晰,更快速,响应更快。

我很高兴将它从MVC v2移到v3,并转换为Razor视图。我也会?如果我是你,我有时间,我会这样做。

下面是我发布的一个问题,概述了该过程以及我在转换中遇到的一个更重要的问题。 Migrating legacy ASP.NET to MVC 2 (RC): HttpApplication events not firing, User principal is null

3

我最近将一个中等大小的项目从WebForms转换为MVC。我不会推荐在你的第一个MVC项目上做这件事,但是一旦你掌握了它,就没有什么能阻止你将WebForms应用程序转换为MVC。

我注意到的主要好处之一是速度。通过抛出视图状态,数据绑定和Web控制怪异性,您将最终获得更快的应用程序。

当然,还有更好的已知好处,如可测试性和完全控制生成的html。

WebForms和MVC共享相同的基本ASP.NET平台,因此它们确实不像您读过的那样不兼容。