當在MVC中添加多個Areas的時候,若是Area下面的控制器的類名和控制器和全局的某個控制的類名和控制器名稱相同的時候,打開全局的url的時候,會出現相似的狀況。提示以下:網絡
找到多個與名爲「Home」的控制器匹配的類型。若是爲此請求(「{controller}/{action}/{id}」)提供服務的路由在搜索匹配此請求的控制器時沒有指定命名空間,則會發生此狀況。若是是這樣,請經過調用含有「namespaces」參數的「MapRoute」方法的重載來註冊此路由。
這個狀況出現後,網絡上搜索能找到的解決方法爲:在Areas下面的RegArea中作修改以下,加上一個 new string[]{ 後面是當前Area中的Controllers的命名空間ide
public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Buyer_default", "Buyer/{controller}/{action}/{id}", new { action = "Index", id = UrlParameter.Optional },newstring[] { "Chihou.Shop.Web.Seller.Controllers" }
);}
通過測試後,發現問題沒法那樣解決,根據上面提供的思路,在Global.ascx.cs下面修改以下,測試
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", // 路由名稱 "{controller}/{action}/{id}", // 帶有參數的 URL new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 參數默認值 , new string[] { "Chihou.Shop.Web.Controllers" } ); }
作個記錄以備忘記,或者後來者使用。url