副題として、ambiguous controller namesの問題全体を理解していて、ルート設定に名前空間を使用しているため、ここで問題にはならないと思います。エリア内のルート名にUrl.RouteUrl()を使用する
は、これまでのところ、私は私のプロジェクト・レベルのコントローラを持っているし、次の登録とユーザーエリア:
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 }
);
}
}
「USERHOME」ルートがあるので、私はルートにクリーナーIMOに見える/User/5
対/User/Home/Index/5
を許可することができます。
Url.RouteUrl("UserHome", new { id = 5 })
を理想的に使用したいと思いますが、これは常に空白に戻ったり、ルート名が見つからないという例外が表示されます。これは明らかです。
ただし、Url.RouteUrl("UserHome", new { controller = "Home", action = "Index", id = 5 })
を使用しても問題ありません。
なぜ、ルートマッピングにデフォルトが設定されている場合、アクションとコントローラを指定する必要がありますか?私は何が欠けていますか?
名前空間を追加してみてください。 – Oasis