2014-04-15 101 views
0

我想要當URL只包含一個控制器(無動作)它會自動瞄準輸入的控制器的索引動作。但是,我仍然希望默認路由是頁面中的登錄。如何根據控制器名稱路由URL只在ASP.NET MVC

缺省路由是:

routes.MapRoute(
       name: "Primary", 
       url: "{controller}/{action}/{id}", 
       defaults: new {controller = "Account", action = "SignIn", id = UrlParameter.Optional} 
       ); 

應的第二條路線是什麼樣的?所以mydomain.com/Account應該去Controller = Account,Action = Index,同時保持domain/controller/action/params的正常結構不變。

謝謝!

回答

1
routes.MapRoute(
name: "Default", 
url: "ApplicantProfile/{action}/{id}", 
defaults: new { controller = "ApplicantProfile", action = "Start", id = UrlParameter.Optional } 
); 


routes.MapRoute(
name: "Default", 
url: "{controller}/{action}/{id}", 
defaults: new { action = "Index", id = UrlParameter.Optional } 
); 

假設你有ApplicantProfileController,HomeController中和OtherController,這將導致:

/ApplicantProfile → ApplicantProfileController.Start 
/Other → OtherController.Index 
/SomeOtherPath → default 404 error page 
/→ default 404 error page 

的介紹,路由見。這有點舊,但它很好地涵蓋了基礎知識。

路由從上到下發生,意思是它停在路由表的第一個匹配處。在第一種情況下,您將首先匹配您的ApplicantProfile路線,以便使用控制器。第二種情況是從路徑中獲取其他,找到匹配的控制器並使用它。最後2個沒有找到匹配的控制器,並且沒有指定默認值,因此返回了默認的404錯誤。我建議在錯誤中加入適當的處理程序。在這裏和這裏看到答案。

+0

routes.MapRoute( 名: 「ControllerOnly」, URL: 「{}控制器」, 的默認值:新{行動= 「索引」,ID = UrlParameter.Optional} ); routes.MapRoute( name:「Default」, url:「{controller}/{action}/{id}」, 默認值:new {controller =「Account」,action =「SignIn」,id = UrlParameter .Optional} ); – user2713516

+0

以上是最終工作的路由:) thx – user2713516

+0

表示它是否對您有幫助... –

相關問題