并排运行ASP.NET Webforms和ASP.NET MVC

并排运行ASP.NET Webforms和ASP.NET MVC,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,目前,我正在从事使用ASP.NET Web窗体构建的Web项目。我们希望开始使用MVC框架构建新页面 看起来并排运行MVC和Web表单是可行的 我很好奇是否有任何问题或陷阱,我需要计划 我正在ASP.NET 4.0上运行,并计划使用MVC3。我能想到的唯一一个问题是,尝试将现有的WebForms代码重用到MVC部件中,并最终将数据集添加到控制器操作中,或者(但愿上帝禁止)在视图中:-)重用此类代码的另一个窍门是,您应该非常小心,不要在MVC视图中添加runat=“server”内容。我会让这两个

目前,我正在从事使用ASP.NET Web窗体构建的Web项目。我们希望开始使用MVC框架构建新页面

看起来并排运行MVC和Web表单是可行的

我很好奇是否有任何问题或陷阱,我需要计划


我正在ASP.NET 4.0上运行,并计划使用MVC3。

我能想到的唯一一个问题是,尝试将现有的WebForms代码重用到MVC部件中,并最终将
数据集
添加到控制器操作中,或者(但愿上帝禁止)在视图中:-)重用此类代码的另一个窍门是,您应该非常小心,不要在MVC视图中添加
runat=“server”
内容。我会让这两个部分尽可能松耦合。正因为如此,我不会将它们混合到同一个项目中:-)

此外,如果您能提供帮助并创建适当的URL路由,请尽量不要使用WebForms视图引擎,这样应该由WebForms处理的页面仍然由WebForms处理。

我想这取决于WebForms和站点MVC部分之间的交互。如果两者都使用相同的后端和相同的安全登录,那么您应该可以。如果web表单和MVC操作需要合作,您可能会遇到问题。正如我所说的,这实际上完全取决于相互作用将是什么。如果他们肩并肩地跑,但彼此不理,那么你应该没事


可能出现的一个问题是,从WebForms切换到MVC以及从MVC切换到WebForms所需要的思维转变,尽管经验和实践会在这里教给你。

我一直在为一个内部应用程序同时运行WebForms和MVC。它最初是一个webforms应用程序,我已经将它迁移到MVC2(然后是3)中,其中有几部分仍然成功地使用webforms

正如Darin所说,主要的问题是模板。如果使用Webforms视图引擎,则必须创建两层母版页。Webforms代码(如脚本管理器)不在MVC页面上运行,MVC代码也不在Webforms页面下运行

我的母版页是使用不包含任何MVC或Webforms代码的全局母版页设置的。它只有CSS、全局javascript和主布局。然后我有一个MVC母版页和一个webforms母版页,它们都有使用全局母版页作为母版页的指令。然后,每个webforms页面使用webforms子母版页,MVC使用MVC子母版页

如果需要在全局母版页中放入一些代码,可以通过测试
页面是否为System.Web.MVC.ViewPage
来检测子页面是Webforms还是MVC页面。如果这是
true
,那么它是一个MVC页面,否则它是一个Webforms页面


然而,如果您决定使用Razor视图引擎(我确实建议使用MVC,它要好得多),它会变得更加困难。你必须做一些额外的工作来解决我之前提到的问题。在这方面应该有所帮助。

我建议将两个应用程序分开,并为它们提供不同的子域,您可以使用虚拟目录将它们保留在同一子域上,但我不喜欢这种方法

通过共享validationKey和decryptionKey,您可以使用一个cookie在两个应用程序上进行验证

这样,您的代码库就不会混合在一起,也不会遇到任何配置文件问题


我已经发布了一篇关于这种方法的文章

@bzlm:谢谢你添加了一个直接链接。谢谢。这也让我找到了其他的帖子:和