2013-01-07 19 views
0

我剛開始學習asp.net mvc平臺,我真的不喜歡有一個/ home /在url中。正確的方法來達到一個Asp.net MVC路線

是否有任何方式可以有一個只有行動和ID爲主控制器的路線,如果有3個動作(索引,關於和聯繫)url讀取本地主機:1190 /,localhost:1190/about和localhost :1190 /接觸。

我知道我可以讓它們成爲單獨的控制器,並且每個控制器都有一個索引視圖,但是真的是這樣做的最佳方式嗎?

回答

3

肯定的:

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

但是記住,由於控制器名稱是路由不再一部分,你不能再指定它 - >你將永遠有一個控制器 - Home,可能會很快如果您開始將所有操作都放在單個控制器中,就會變得過熱。

+0

好的,那是我的想法。我在想,也許有一種聰明的方式來建立一條適合家庭的路線,只需要採取行動,但對於其他任何需要控制器和行動的路線。 - 謝謝 – hjavaher

+1

事實上,你可以使用['route constraints'](http://www.asp.net/mvc/tutorials/controllers-and-routing/creating-a-route-constraint-cs)。這樣你就可以有2個路由定義,其中一個包含了Home操作,在這些操作中,你限制它們的名稱只是你想要處理的名稱,之後有一個默認路由,其中​​你將控制器名稱限制爲與home不同的任何東西,當然是您在第一個路線定義中列出的控制器操作。 –

+0

您可以在此之前添加更多特定路線,例如routes.MapRoute(null,「orders/{action}/{id}」,new {controller =「Orders」,action =「Index」,id = UrlParameter.Optional} ); –