2012-10-03 10 views
18

というコントローラーがあります。SummaryDetails、およびStatusの3つのアクションを持つコントローラーがありますが、どちらもIDなどのパラメーターはありません。 URL /DashboardSummaryコントローラのDashboardコントローラの動作にルーティングしたいのですが、/Dashboard/Summaryのように動作しますが、ルートを追加する正しい方法を理解できません。 Global.asax.csでは、私は以下があります。ASP.NET MVC 3のコントローラーのデフォルトのアクションを設定します。

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

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

をこれだけにしようとしたとき、私はいつも404を取得する:第二部については

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" } 
    ); 

、私も試してみましたアクセス/Dashboard。私はかなりのパラメータのフォーマットについて何かが不足していると確信していますMapRouteしかし、私はそれが何であるか分かりません...

答えて

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

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のアクションになります。

4

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

0

任意のコントローラasp.netのためのこのセットのデフォルトの処置:

routes.MapRoute("Dashboard", "{controller}/{action}", 
defaults: new { controller = "Dashboard", action = "Summary" }); 
関連する問題