2012-10-08 97 views
0

我要註冊爲MVC多條路線,我的要求URL是如下:註冊多個路由

http://mysite.com/myapps/[action]/[id] 
http://mysite.com/myapps/[parameter]/build/ 
http://mysite.com/myapps/[parameter]/build/MyType1/[action]/[id] 
http://mysite.com/myapps/[parameter]/build/MyType2/[action]/[id] 
http://mysite.com/myapps/[parameter]/build/MyType3/[action]/[id] 
http://mysite.com/myapps/[parameter]/build/MyType4/[action]/[id] 
http://mysite.com/myapps/[parameter]/build/MyTyp51/[action]/[id] 
http://mysite.com/myapps/[parameter]/messages/[action]/[id] 
http://mysite.com/myapps/[parameter]/users/[action]/[id] 
http://mysite.com/account/[action]/[id] 
http://mysite.com/help/[action]/[id] 
http://mysite.com/videos/[action]/[id] 

我怎麼能acheive?

感謝

+1

您是否諮詢過:[this](http://www.dotnetcurry.com/ShowArticle.aspx?ID=814)? – christophersw

回答

0

可以通過使用在RouteCollection(路由)類定義的方法MapRoute實現這個。

如果你打開RouteConfig.cs文件(App_Start文件夾下找到),你會看到RegisterRoutes()方法。在這個方法中,你會看到一個像這樣的默認路由:

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

要添加自定義路線,您將添加這樣的事情:

// Make sure your custom routes are placed BEFORE the default route 
routes.MapRoute(
    name: "MyRoute01", 
    url: "myapps/{action}/{id}", 
    defaults: new { controller = "myapps", action = "Index", id = UrlParameter.Optional} 
); 

routes.MapRoute(
    name: "MyRoute02", 
    url: "myapps/{parameter}/build/{MyType}/{action}/{id}", 
    defaults: new { controller = "myapps", action = "Index", parameter = "MyDefaultParamValue", MyType="MyType1", id = UrlParameter.Optional } 
); 

的路線上面無非是多回應「如何實現」註冊多條路線。換句話說,上面的例子只不過是一個提示,讓你開始。

我們無法爲您提供確切的路線,因爲您沒有給出控制器和操作名稱的具體細節,也沒有指定您的URL模式的含義 - 即哪些類和方法(控制器和操作)是否需要自定義路由解決?

請記住,一個URL最終只能調用一個生存在特定類(Controller)中的方法(Action)。因此,在您的自定義路由中,您可以創建任何您希望的URL模式,但您必須明白,路由必須根據URL模式指定要啓動的Controller和Action。

如果上述信息對您而言是新聞,那麼您應該瞭解MVC路由系統的工作原理(並且不適用於此)。