従来のルーティングのデフォルトは、これらの URL にアクセスでき、常に同じアクションで終わることを意味していました。
/
/Home
/Home/Index
しかし、今日は次の行に何かを書きます。
[RoutePrefix("Home")]
[Route("{action=Index}")]
public class HomeController
{
public ActionResult Index() {}
public ActionResult ...
}
しかし、このルーティング定義は決して同じではありません。
/ (fails)
/Home (works)
/Home/Index (works)
したがって、上位コードを次のように変更すると、
[RoutePrefix("Home")]
[Route("{action=Index}")]
public class HomeController
{
[Route("~/")]
public ActionResult Index() {}
public ActionResult ...
}
しかし、処理を逆さまにします。
/ (works)
/Home (fails)
/Home/Index (fails)
宣言型コードをより冗長にして、昔ながらのルーティングメカニズムとして機能させることができます。
[RoutePrefix("Home")]
[Route("{action=Index}")]
public class HomeController
{
[Route("~/")]
[Route("~/Home")]
[Route("~/Home/Index")]
public ActionResult Index() {}
public ActionResult ...
}
これは、3 つの異なるルートすべてで機能します。
質問
もちろん、この問題は、コントローラーとアクションをデフォルト設定するまさにアプリケーションのデフォルト アクションに関連しています。これが唯一の方法なのだろうか?期待どおりに動作させるための、より冗長なコードの方法はありますか?