OnActionExeuting 内で現在のエリア名を取得する必要があります。以下のように取得しています。
_areaName = ctx.RouteData.DataTokens["area"].ToString();
これは、デフォルト ルート (私のランディング ページ - ログオン) を除くすべてのルートで機能します。デフォルト ルートは、global.asax で次のように定義されています。
public static void RegisterRoutes(RouteCollection routes)
{
routes.Ignore("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{area}/{controller}/{action}/{id}",
new {area = "Home",
controller = "UserLogon",
action = "Login",
id = UrlParameter.Optional
}
);
}
エリア登録は以下の通りです。
public override string AreaName
{
get
{
return "Home";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Home_default",
"Home/{controller}/{action}/{id}",
new {controller = "UserLogon", action = "Login", id = UrlParameter.Optional }
);
}
私は何が欠けていますか?