2016-04-13 105 views
0

我在C#中使用Asp.net Mvc 5。在Asp.net上禁用默認路由Mvc

我想在我的項目中禁用默認路由。我的地圖路線喜歡;

routes.MapRoute(name: "News", 
        url: "haberler", 
        defaults: new { controller = "News", action = "Index"}); 


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

當用戶訪問我的網站的新聞網頁,它像;

www.domain.com/haberler 

但是用戶也可以訪問如下的新聞頁面;

www.domain.com/news 

我想刪除"/news"或直接到搜索引擎友好的URL等; 「/哈伯勒」

所以,我怎麼能禁用默認路由(Controller-Name-Convension)路由?

+0

要刪除默認處理,只需刪除'MapRoute',名稱爲'Default' –

+0

我不認爲禁用是個好主意。而是根據需要創建自定義路線。 –

+0

有人可以禮貌地告訴我爲什麼你給我的問題減去?它很簡單,乾淨,而且需要爲優化進行優化。也許我會用owin啓動代碼重定向規則。但我正在尋找一種更好的方式來做到這一點。 –

回答

0

在MVC中,慣例是在一個特定的URL Controller映射到特定Action。刪除默認路由禁用默認約定:

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

除刪除「默認」的路線,你可以將一個控制器約束添加到它

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

這樣,/news將返回404未找到。

0

www.domain.com/news將不會匹配您的任何路線,因此它會引發錯誤。

0

嘗試用這種

RouteTable.Routes.Remove(RouteTable.Routes["NAME ROUTE YOU WISH TO RMOVE"]); 

希望這將幫助你消除。