我更喜欢做MVC,因为常规的WebForms开发让我感到很痛苦。
然而,我被分配了一个相当大的WebForms项目来添加一些功能。
有没有办法让WebForms和ASP.NET MVC在同一个项目中共存,甚至共同处理网站?我知道我在寻求一种hack方法。
我更喜欢做MVC,因为常规的WebForms开发让我感到很痛苦。
然而,我被分配了一个相当大的WebForms项目来添加一些功能。
有没有办法让WebForms和ASP.NET MVC在同一个项目中共存,甚至共同处理网站?我知道我在寻求一种hack方法。
我没有亲自尝试过,但根据 Chad Myer 的博客文章,似乎是可以实现的。不过这篇文章有点老了。 http://www.chadmyers.com/Blog/archive/2007/11/30/asp.net-webforms-and-mvc-in-the-same-project.aspx
我是如何将MVC5添加到现有的Web Forms项目中的:
创建一个新的ASP.NET MVC项目。您可以使用它来将信息复制到您的现有项目中。
在您现有的项目中,使用nuget添加引用。这也将更新您的Web.config并添加jQuery文件。将此复制到您的Package Manager Console中。
Install-Package -Id "Microsoft.AspNet.Mvc" -Version 5.2.2" -ProjectName ExistingWebApp
Install-Package -Id "jQuery" -Version "1.10.2" -ProjectName ExistingWebApp
Install-Package -Id "jQuery.Validation" -Version "1.11.1" -ProjectName ExistingWebApp
Install-Package -Id "Microsoft.AspNet.Web.Optimization" -Version "1.1.3" -ProjectName ExistingWebApp
Install-Package -Id "Microsoft.jQuery.Unobtrusive.Validation" -Version "3.2.2" -ProjectName ExistingWebApp
Install-Package -Id "Modernizr" -Version "2.6.2" -ProjectName ExistingWebApp
Copy BundleConfig, Routeconfig, FilterConfig and any others you need to App_Start
Add the register lines from Application_Start
to Global.asax. You can get them from your new project.
Add these keys to the <appsettings>
of your Web.config
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="PreserveLoginUrl" value="true" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
Add a reference to the Microsoft.CSharp assembly
Add the Views and Controllers folder
Now you can start adding views and controllers as you would do in any Mvc project
如果你还有空间读一本书,我强烈推荐 Steve Sanderson 的书 http://bit.ly/1W03Tv(我不是卧底...这本书真的帮了我很多)。他在书中有一个关于"结合MVC和WebForms"的章节。
我想在这里总结这个过程,但它有点冗长。如果你有机会,请去看看。
现在已经是2011年了,我们有.NET 4.0,将它们结合起来相当容易。只需启动一个新的MVC3项目,添加HomeController和视图(例如Home/Index.cshtml),然后添加一个新文件夹,比如说/Admin,然后在其中添加一个Web表单,如/Admin/Default.aspx...就这样,运行它,主页将使用MVC,管理部分将使用Web表单。
<ProjectTypeGuids>{E53F8FEA-EAE0-44A6-8774-FFD645390401};{...};{...}</ProjectTypeGuids>