web-dev-qa-db-ja.com

ASP.NET MVC 3のコントローラーに(インデックスの代わりに)デフォルトのアクションを設定する

Dashboardと呼ばれるコントローラーがあり、3つのアクション:SummaryDetails、およびStatusがあり、いずれもIDやその他のパラメーターを受け取りません。 URL /DashboardSummaryコントローラーのDashboardアクションにルーティングしたいのですが、/Dashboard/Summaryと同じように追加できますが、正しい追加方法がわかりませんルート。 Global.asax.csには、次のものがあります。

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new {controller = "Home", action = "Index", id = UrlParameter.Optional} // Parameter defaults
    );

routes.MapRoute(
    "/Dashboard",
    "Dashboard",
    new { controller = "Dashboard", action = "Summary" }
    );

第二部では、私も試しました:

routes.MapRoute(
    "/Dashboard",
    "{controller}",
    new { controller = "Dashboard", action = "Summary" }
    );

そして

routes.MapRoute(
    "/Dashboard",
    "{controller}",
    new { action = "Summary" }
    );

/Dashboardにアクセスしようとすると、常に404が表示されます。 MapRouteへのパラメーターの形式について何か不足していると確信していますが、それが何かわかりません...

22
Cody

ダッシュボードルートをデフォルトルートの前に移動します。

routes.MapRoute(
    "Dashboard",
    "Dashboard/{action}",
    new { controller = "Dashboard", action = "Summary" }
);

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new {controller = "Home", action = "Index", id = UrlParameter.Optional} // Parameter defaults
);

ルートの順序はすべてを変更します。また、Dashboardルートに加えた変更にも注目してください。最初のパラメータはルートの名前です。 2つ目はURLで、Dashboardで始まるURLと一致し、Dashboardコントローラーで他のアクションを許可します。ご覧のとおり、デフォルトでSummaryアクションになります。

36
Gromer

「デフォルト」のキャッチオールルートを最後に宣言する必要があります。

5
tuxedo25

これにより、コントローラーasp.netのデフォルトアクションが設定されます。

routes.MapRoute("Dashboard", "{controller}/{action}", 
defaults: new { controller = "Dashboard", action = "Summary" });
0
Newred