目標:
以前有老的WebForm應用程式,希望一步步轉移到MVC,或者使二者能夠部署在一起,把MVC項目整合到之前的WebForm項目中。
步驟:
把MVC項目轉移到WebForm WebApplication項目中
1.在之前的WebApplication中引用以下程式集
- System.Web.Extensions
- System.Web.Helpers
- System.Web.Mvc
- System.Web.Razor
- System.Web.Routing
- System.Web.WebPages
- System.Web.WebPages.Razor
說明:System.Web.Razor與System.Web.WebPages.Razor可選,如果你的MVC項目使用了Razor引擎則必須添加
2.配置路由
把之前在Mvc項目中的路由配置拷貝到WebApplication中,然後在Application_Start事件中註冊路由表
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults ); } void Application_Start(object sender, EventArgs e) { // Code that runs on application startup RegisterRoutes(RouteTable.Routes); }
當然別忘了在Global.aspx.cs中引用下列命名空間
using System.Web.Mvc;using System.Web.Routing;
3.複製Controls,Models,View檔案夾中的代碼到WebApplication項目中
實際上在開發中大家是把Controls與Models等拆分成獨立的項目來開發的,這樣只要在WebApplication項目中引用這些項目即可。
不過目前有一個疑問是:controlers命名空間與當前項目的關係,MVC為何會調用aa.Controlers中的方法而不是,bb.Controlers中的方法
4.複製web.config中的一下配置節到新項目中<system.web>配置節下
<compilation debug="false" targetFramework="4.0"><assemblies><add assembly="System.ComponentModel.Composition, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/><add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/><add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/><add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/><add assembly="System.Web.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/><add assembly="System.Web.RegularExpressions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/><add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/><add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/><add assembly="System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></assemblies></compilation>
到這裡,基本操作已經完成,上邊只是操作簡單是Demo,在真實的項目中可能還會遇到其他的問題,注意在操作過程中是否引用了一些其他的程式集等等,一步一步的加進來就可以了。
當然也是可以整合到Website項目中的,方法類似。在修改Global.aspx時注意使用以下語句引入命名空間
<%@ Import Namespace="System.Web.Mvc" %><%@ Import Namespace="System.Web.Routing" %>