2011-06-20 146 views

回答

11

我一直在这里为内部应用程序一起运行Webforms和MVC。它开始作为一个webforms应用程序,我已经将其迁移到MVC2(然后3),仍然有几个仍然成功地与Webforms合作。如Darin所说,主要的问题是模板化。如果您使用Webforms View Engine,则必须创建2层主页面。 Webforms代码(如脚本管理器)不能在MVC页面上运行,并且MVC代码在Webforms页面下不起作用。

我的母版页设置了全局母版页,不包含任何MVC或Webforms代码。它只有CSS,全局JavaScript和主布局。然后我有一个MVC母版页和一个webforms母版页,都有指令将全局母版页用作母版页。然后,每个webforms页面使用Webforms子主页面,而MVC使用MVC sub-master页面。

如果您需要在全局母版页中放置一些代码,您可以通过测试Page is System.Web.Mvc.ViewPage来检测子页面是否为Webforms或MVC页面。如果这是true那么它是一个MVC页面,否则它是一个Webforms页面。但是,如果您决定使用Razor视图引擎(我建议用于MVC,那么它会更好),这会变得更加困难。你必须做一些额外的工作,通过我之前提到的。 This blog post应该在这方面提供帮助。

+0

谢谢。这也导致我到其他职位:http://www.eworldui.net/blog/post/2008/05/09/ASPNET-MVC-Living-in-a-Web-Forms-World.aspx和http:// www.eworldui.net/blog/post/2011/01/07/Using-Razor-Pages-with-WebForms-Master-Pages.aspx –

1

我能想到的是唯一的疑难杂症动心重用现有的WebForms代码到MVC部分,并与DataSets最终进入你的控制器动作,或(可能上帝保佑)到您的意见:-)另一种疑难杂症重复使用这样的代码是,你应该非常小心,不要以runat="server"的东西进入你的MVC视图。我会尽量保持松散耦合的两部分。正因为如此,我不会它们混合到同一个项目:-)

2

除了what Darin said,尽量不要使用WebForms的视图引擎,如果你能帮助它,并创建正确的URL路由,使网页应该是由WebForms处理仍由WebForms处理。

+0

优秀点。 –

+0

@bzlm:感谢您添加直接链接。 – R0MANARMY

1

我想这取决于WebForms和网站的MVC部分之间会发生什么样的交互。如果两者都使用相同的后端和相同的安全日志,那么你应该没问题。如果网络表单和MVC操作需要合作,您可能会遇到问题。正如我所说,这完全取决于互动的内容。如果他们并排运行,但彼此独处,那么你应该没问题。

可能出现的一个问题是需要从WebForms切换到MVC,反之亦然,尽管经验和实践将在这里教会您。

0

我建议保持两个应用程序分开并给予不同的子域,您可以通过使用虚拟目录将它们保留在同一个子域中,但我不喜欢这种方法。

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

这样你的代码库不会混合,你也没有反对任何配置文件问题。

我已经发布了此方法的longer description