2014-09-04 120 views
0

所以我有一個缺省路由縮短MVC控制器路由烏里

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

這個偉大的工程,正是我想要做的事。所以它看起來像我可以手動更改url參數爲我想要的任何模式。那麼,爲什麼那麼,這不行:

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

我知道asp.net默認路由使用(名稱)控制器模式和提取物(名稱),並用它作爲URL,但它似乎沒有不如果我想自定義控制器名稱應該去的url部分,則工作。

我覺得我的大腦起飛假期就這一個=(

+0

是什麼讓你覺得它不起作用?如果輸入'http:// /s',它會將您帶到'Structures'控制器的'Index'方法。如果沒有,這個問題可能是您的路線的順序 – 2014-09-05 00:05:51

+0

@StephenMuecke這正是我也是!唉,我得到了「找不到資源」。錯誤,所以我顯然做錯了什麼。 – Josh 2014-09-05 00:40:38

+0

@StephenMuecke AARRRGG,沒關係。我註冊了「Default」路由,我想我不知道這覆蓋了所有的自定義路由。我評論說,它的工作。 太令人沮喪了...... – Josh 2014-09-05 00:43:58

回答

1

你的路線將正常工作。如果不是,它可能是由於的順序定義你的路由(順序是顯著)從this article

傳入URL是在圖案 出現在路由字典順序比較路由patters(這就是我們添加的路線圖 在我們RouteConfig.cs文件)。

釷e成功匹配控制器,動作和 動作參數的第一路由或者URL中的參數或定義爲路由映射一部分的默認值 將調用指定的 控制器和動作。這很重要,並且要求我們仔細考慮我們的 路由,以便錯誤處理程序不會被無意中調用 。