ASP.NET MVC でアプリケーションルートディレクトリにアクセスしたときの動作を実装する手順を紹介します。
初期状態では、ASP.NET MVCアプリケーションのルートディレクトリにアクセスすると、NotFoundのエラーとなります。
概要
アプリケーションディレクトリにアクセスした場合の処理は、ルーティングを利用して別のコントローラーで処理することで対応します。
手順
コントローラの追加
ASP.NET MVCアプリケーションにコントローラーを追加します。ソリューションエクスプローラでControllersディレクトリを選択し、右クリックします。ポップアップメニューの[追加]のサブメニューの[コントローラー]を選択します。
[スキャフォールディングの追加]ダイアログが表示されます。[MVC 5 コントローラー]を選択します。
コントローラー名は"HomeController"とします。
コントローラーが追加できました。
ビューの追加
ソリューションエクスプローラで"Views"ディレクトリ内の"Home"ディレクトリを選択します。右クリックし、ポップアップメニューを表示します。[追加]メニューの[ビュー]を選択します。
[ビューの追加]ダイアログが表示されます。
ビュー名をIndexにして、ビューを追加します。
ビューが追加できました。
コード
index.cshtmlとGlobal.asaxに下記のコードを記述します。
index.cshtml
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
デフォルトページ
</div>
</body>
</html>
Global.asax
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace AppRoot
{
public class MvcApplication : System.Web.HttpApplication
{
public void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute("Default", "{controler}/{action}/{id}", new { controller = "Home", action = "Index", id = "" });
/*
//または下記
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
*/
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
}
}
解説
routes.MapRoute("Default", "{controler}/{action}/{id}", new { controller = "Home", action = "Index", id = "" });
上記のコードにより、アプリケーションルートディレクトリへのアクセスを、HomeコントローラーのIndexアクションにルーティングしています。
実行結果
プロジェクトを実行し、アプリケーションルートディレクトリにアクセスします。ページが表示されるようになりました。
表示されるページの内容は"Home"コントローラーの"Index"アクションと同じページになります。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2018-01-17
作成日: 2015-07-27