私はMVCの領域用語に新しく、私はそれを使いたいです。私はAreaのコントローラーを指す以下のディレクトリーを持っています。エリアのコントローラのURLが長すぎます。URLを短縮する方法は?
Areas > Admin > Controllers > AdminController
AdminControllerのインデックスアクションにアクセスするには、http://localhost/Admin/Adminにアクセスする必要があります。私は第2の「管理者」を取り除きたい。入力するのはhttp://localhost/Admin/のみです。どうやってやるの?
AdminAreaRegistration.csあなたがURLに含めていない限り、ルーティングエンジンは、それはあなたがしたいコントローラ識別する方法はありませんので、あなたは、コントローラのデフォルト値を指定していない以下のMapRoute
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
だろう
HomeController
べきであることを示唆している持つあなたがその中に同じ名前のコントローラを持っていれば、エリアを持つという目的を打ち破ることができます) –
それは働いていました。しかし、新しいコントローラは "Admin"、アクション= "インデックス"、id = UrlParameter.Optional} "新しい{controller =" Admin "、action =" Index "、id = UrlParameter.Optional}"を指定すると、既定のコントローラがAdminであることを指定しているのでしょうか? –
はい、まさにそうです。 - もしthあなたの '' Admin_default '、 'ルート(Adminで始まる)にマッチします。 2番目のセグメント(コントローラ用)を指定しなかったので、コントローラとアクションのデフォルト値を使用します(実際には '.../Admin/Admin/Index'と同じです)。 –