Skip to content
November 27, 2013 / windperson

Visual Studio 2012 ASP.NET Webform專案增加ASP.NET MVC4功能

以下是在Visual Studio 2012中使用.net framework v4.0的ASP.NET Webform專案增加支援ASP.NET MVC 4的方法:

  1. 修改.csproj專案檔

    修改ASP.NET Webform專案的專案檔以便Visual Studio開啟時能提供MVC專案的IDE支援,建議先將該專案從Visual Studio關閉後再修改:

    • 用文字編輯器開啟該專案的.csproj檔案,在<ProjectTypeGuids>的內容增加一段字串{E3E379DF-F4C6-4180-9B81-6769533ABE47};如下圖所示:
      增加的內容
    • 在最後面可自訂MSBuild的區段前,增加一個MSBuild Target:

      <Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
        <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
      </Target>
      

      如下圖所示:
      增加編譯MVC View的msbuild target

  2. 用Nuget安裝ASP.NET MVC 4及其相關的Nuget package

    用Visual Studio開啟該專案,使用Nuget Package Console,用下面這幾個指令安裝相關的Nuget package:

    Install-Package Microsoft.AspNet.Mvc -Version 4.0.30506
    Install-Package Microsoft.AspNet.Mvc.FixedDisplayModes -Version 1.0.1
    Install-Package Microsoft.AspNet.Web.Optimization -Version 1.0.0 
    Install-Package Modernizr
    Install-Package WebGrease -Version 1.3.0
    
  3. 建立ASP.NET MVC4的專案目錄結構及預設檔案

    最簡單的方式是先用Visual Studio建立一個空白的ASP.NET MVC 4專案,然後再拷貝該專案對應的目錄和預設檔案過來:

    1. 建立新專案,選擇ASP.NET MVC 4 Web Application,然後按OK:
      建立空的ASP.NET MVC 4專案
    2. 選擇Basic然後按OK
      選擇Basic範本
    3. 複製下列檔案及目錄,保持相對應的路徑貼到目前正在『整形』的ASP.NET Webform目標專案內:

      • App_Start目錄內的BundleConfig.csFilterConfig.csRouteConfig.cs
      • Content目錄以及其內部的所有檔案
      • Views目錄內以及其內部的所有檔案
      • Global.asaxGlobal.asax.cs
        假如目標專案內沒有這兩個檔案的話
      • 自行在目標專案的根目錄內建立ControllersModels這兩個空白目錄
  4. 修改複製過來的原始碼檔案以符合目標專案

    • 修改App_Start目錄內的BundleConfig.csFilterConfig.csRouteConfig.cs這三個檔案內容所宣告的namespace以符合目標專案的預設命名空間
    • 假如Global.asaxGlobal.asax.cs這兩個檔案不是從前一個步驟的ASP.NET MVC 4專案複製過來的話,在Global.asax.csApplication_Start()方法的開頭增加下述程式碼:
      AreaRegistration.RegisterAllAreas();
      FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
      RouteConfig.RegisterRoutes(RouteTable.Routes);
      BundleConfig.RegisterBundles(BundleTable.Bundles);
      

      有可能會需要引入下列三個命名空間:

      using System.Web.Mvc;
      using System.Web.Optimization;
      using System.Web.Routing;
      
  5. 修改Web.config

    • 增加下面這幾個namespace引入指令到Web.config<system.web><pages><namespace>…</namespace></pages>

      <add namespace="System.Web.Helpers" />
      <add namespace="System.Web.Mvc" />
      <add namespace="System.Web.Mvc.Ajax" />
      <add namespace="System.Web.Mvc.Html" />
      <add namespace="System.Web.Optimization" />
      <add namespace="System.Web.Routing" />
      <add namespace="System.Web.WebPages" />
      

      如下圖所示:
      增加Web.config引用namespace

    • 修改或新增<appSettings>內的設定值以符合下述內容:
      <add key="webpages:Version" value="2.0.0.0" />
      <add key="webpages:Enabled" value="false" />
      <add key="PreserveLoginUrl" value="true" />
      <add key="ClientValidationEnabled" value="true" />
      <add key="UnobtrusiveJavaScriptEnabled" value="true" />        
      

然後建置專案,如果編譯成功的話,就可以在這整形完畢的ASP.NET Webform專案內建立及使用ASP.NET MVC 4功能!

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: