也玩ASP.NET MVC 與 WebFroms 整合

來源:互聯網
上載者:User
目標:

以前有老的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" %>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.