2015-06-29 24 views
0

我想設置一個規則只爲defaultController關於MVC的路線

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

然而,http://10.12.2.37:120/test/show/2.html也可以打開。這不是我想要的。有人能幫我嗎?

+1

爲什麼你不能刪除默認的路由映射? :) – Kamo

+0

因爲我想要其他控制器使用默認路由映射 – user4975943

回答

0

我認爲你缺少約束:

routes.MapRoute(
    name: "testDefault", 
    url: "Default/{action}/{id}.html", 
    defaults: new { controller = "Default", action = "Index", id = UrlParameter.Optional }, 
    constraints: new { 
      id = @"\d+" 
    } 
); 
routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { 
      controller = "Test", 
      action = "Show", 
      id = UrlParameter.Optional 
    }, 
    constraints: new { 
      id = @"\d+" 
    } 
); 

我也是會建議你使用路由測試工具,如routedebugger從菲爾哈克。你可以使用nuget

+0

謝謝。我想我konow它 – user4975943