補足として、あいまいなコントローラー名の問題全体を理解しており、名前空間を使用してルートを機能させているため、ここでは問題ではないと思います。
これまでのところ、プロジェクトレベルのコントローラーと、次の登録を持つユーザーエリアがあります。
public class UserAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "User";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"UserHome",
"User/{id}",
new { action = "Index", controller = "Home", id = 0 },
new { controller = @"Home", id = @"\d+" }
);
context.MapRoute(
"UserDefault",
"User/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
/User/5
「 UserHome 」ルートがあるので、/User/Home/Index/5
IMO よりきれいに見えるルートを許可できます。
理想的には、を使用Url.RouteUrl("UserHome", new { id = 5 })
してルートを別の場所に生成したいのですが、これは常に空白に戻るか、ルート名が見つからないという例外が発生します。これは明らかにそこにあります。
しかし、私が使用するときUrl.RouteUrl("UserHome", new { controller = "Home", action = "Index", id = 5 })
は問題なく動作します。
ルート マッピングに既にデフォルトがあるのに、アクションとコントローラーを指定する必要があるのはなぜですか? 私は何が欠けていますか?