MVC 默認路由 Areas


1、使用重名controller

   在asp.net mvc2以后的版本里面,有了area(區域的概念),這為我們開發中提供了不少方便的地方,但是很不湊巧,若是存在多個重名的controller就會發生錯誤,因此我們可以根據router的規則來解決這個問題。

錯誤提示:

我們可以根據錯誤提示來解決這個問題,在MapRoute方法添加namespaces參數,代碼如下:

 1 public static void RegisterRoutes(RouteCollection routes)
 2         {
 3             routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
 4 
 5             routes.MapRoute(
 6                 name: "Default",
 7                 url: "{controller}/{action}/{id}",
 8                 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
 9                 namespaces:new []{"MvcApplication8.Controllers"}
10             );
11         }

 

加上命名空間后,就會按照命名空間去找相應的控制器,這個問題就解決了。

2、設置area里面的頁面為起始頁

解決這個問題,我們可以使用Route對象的DataTokens屬性來指定命名空間列表。DataTokens.Add()方法,我們可以理解為存儲於Route對象的DataTokens屬性中,對應的Key為“Namespaces”。這兩個問題的解決方法有相似之處。

代碼:

 1 public static void RegisterRoutes(RouteCollection routes)
 2         {
 3             routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
 4 
 5             routes.MapRoute(
 6                 name: "Default",
 7                 url: "{controller}/{action}/{id}",
 8                 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
 9                 namespaces: new[] { "MvcApplication8.Controllers" }
10             ).DataTokens.Add("area","admin");
11         }

 

其中defaults里面的controller和action為area里面設置起始頁面的controller和action方法。

 

很多人為這個默認起始頁發愁,都找不到!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM