Web FormsプロジェクトにASP.NET MVCを追加する

ASP.NET MVC本に載っていたやりかたについてデス(・∀・)

アセンブリの追加

プロジェクトに以下のアセンブリへの参照を追加します。

  • System.Web.Abstraction
  • System.Web.Mvc
  • System.Web.Routing


ファイル&ディレクトリ追加

ASP.NET MVC用のフォルダを作って、下記の様なMVC用のファイルを追加します。

  • HomeController.cs
  • Index.aspx、About.aspx
  • Site.master
  • ~/Views/Web.config

あと、cssJavaScript関連も追加。



Web.config

Web.configに対して、下記の様な項目を追加していきます。

<compilation debug="false">
  <assemblies>
    <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <!-- 下記項目追加 -->
    <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  </assemblies>
</compilation>
<pages>
  <controls>
    <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  </controls>
  <!-- 下記項目追加 -->
  <namespaces>
    <add namespace="System.Web.Mvc"/>
    <add namespace="System.Web.Mvc.Ajax"/>
    <add namespace="System.Web.Mvc.Html"/>
    <add namespace="System.Web.Routing"/>
    <add namespace="System.Linq"/>
    <add namespace="System.Collections.Generic"/>
  </namespaces>
</pages>
<httpModules>
  <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  <!-- 下記項目追加 -->
  <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</httpModules>

Routing登録

Global.asax.csでルーティングテーブルの登録を行います。

protected void Application_Start(object sender, EventArgs e)
{
    RouteTable.Routes.MapRoute(
        "Default",
        "{controller}/{action}/{id}",
        new { controller = "Home", action = "Index", id = "" }
    );
}


以上で作業は完了。
既存のaspxファイルにアクセスすればWeb Formsな画面が表示できるし、/HomeにアクセスすればHomeControllerが実行されます(・∀・)