2013-06-21 33 views
1

我有一個奇怪的問題,在ASP.NET與地區合作MVC 4區ASP.NET MVC 4奇怪的是沒有工作

root --- Areas --- Admin  ___ HomeController 
           ___ AgenceController 
       --- AdminAgence___ HomeController 
           ___ AgenceController 

管理方面完美的作品,現在當我傳遞給AgenceAdmin,它的工作原理當我重定向時,我重定向到AgenceController或任何其他控制器的家庭控制器,而不是工作,這是我的兩個區域regestration代碼:

public class AdminAgenceAreaRegistration : AreaRegistration 
    { 
     public override string AreaName 
     { 
      get 
      { 
       return "AdminAgence"; 
      } 
     } 

     public override void RegisterArea(AreaRegistrationContext context) 
     { 
      context.MapRoute(
       "AdminAgence_default", 
       "AdminAgence/{controller}/{action}/{id}", 
       new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 
     } 
    } 

和管理區(至極的作品完美)

public class AdminAreaRegistration : AreaRegistration 
    { 
     public override string AreaName 
     { 
      get 
      { 
       return "Admin"; 
      } 
     } 

     public override void RegisterArea(AreaRegistrationContext context) 
     { 
      context.MapRoute(
       "Admin_default", 
       "Admin/{controller}/{action}/{id}", 
       new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 
     } 
    } 

而且Global.asax.cs中

public class MvcApplication : System.Web.HttpApplication 
    { 
     protected void Application_Start() 
     { 
      AreaRegistration.RegisterAllAreas(); 
      WebApiConfig.Register(GlobalConfiguration.Configuration); 
      FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
      RouteConfig.RegisterRoutes(RouteTable.Routes); 
      BundleConfig.RegisterBundles(BundleTable.Bundles); 
      AuthConfig.RegisterAuth(); 
     } 
    } 

我做了AdminAgence區就像管理並沒有什麼作品爲AdminAgence ...

我也與角色一起定義的角色,訪問每個區域以及角色區域Admin,AdminAgence和Membre

+0

在Agence地區有沒有家庭控制器的索引行動? – ericdc

+0

我不知道它是否是一個typeo,但我會開始使'AdminAgence'和'AgenceAdmin'標籤一致。 – Jasen

+0

@ericdc是和管理區完美地工作 –

回答

1

你不應該添加任何東西使用MapRoute超載與namespaces。最好的情況是你需要從現有項目中刪除引用你的新區域名稱的所有路由,然後讓框架爲你處理所有的路由。

+0

好吧,我會嘗試這 –

+1

我真的厭倦了,我試圖解決一個問題,可以用這樣的解決... ...本地的方式:)它的工作:)謝謝,但我不明白爲什麼它沒有工作:(是否在ASP.NET中的錯誤?我不這麼認爲 –

+0

它是我的經驗,本機mvc api是非常嚴格,只有在規則存在例外的情況下才能避開。還有很多其他的片狀路由引擎,或者你可以自己構建。 –

1

檢查區域文件夾名稱以確保它與代碼中指定的路由名稱相匹配。

+0

是的它匹配我剛纔看到它 –

+0

我應該告訴你,我使用角色,我不'不知道這是否會影響路線 –

3

在所有的映射

context.MapRoute(
    name: "AdminAgence_default", 
    url: "AdminAgence/{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
    namespaces: new string[] { "MyNamespace.Areas.AdminAgence.Controllers" } 
); 
+0

是的,我做了你剛纔告訴我的,但仍然不起作用 –

+0

你得到了什麼樣的錯誤? – Jasen

+0

'/'應用程序中的服務器錯誤。 無法找到該資源。 –