23

、、およびのDashboard3 つのアクションで呼び出されるコントローラーがあり、いずれも ID やその他のパラメーターを取りません。URL をコントローラーのアクションにルーティングするようにしたいのですが、ルートを追加する正しい方法がわかりません。には、次のものがあります。SummaryDetailsStatus/DashboardSummaryDashboard/Dashboard/SummaryGlobal.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" }
    );

2 番目の部分では、次のことも試しました。

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

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

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

4

3 に答える 3

36

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

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 です。これは で始まる URL に一致し、コントローラーDashboardで他のアクションを可能にしますDashboard。ご覧のとおり、デフォルトでSummaryアクションになります。

于 2012-10-03T19:46:06.357 に答える
6

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

于 2012-10-03T19:45:53.757 に答える