2011-10-12 64 views
2

我有一些麻煩在我的項目設置了兩個領域,我創建了由右翼的區域點擊我的項目 - >添加 - 使用VS 2010專業版>區域,ASP.NET MVC3使用領域

它的代碼在* AreaRegistration.cs文件中生成的結果與我期望的完全相同。

我的地區都有多個控制器。

我檢查了我的Global.asax.cs文件,它包含了我所期望的,下面是在底部:

// Generated code 
AreaRegistration.RegisterAllAreas(); 
RegisterGlobalFilters(GlobalFilters.Filters); 
RegisterRoutes(RouteTable.Routes); 

當我更改默認生成的路由信息,我可以得到它的控制器工作:

context.MapRoute(
    "CommunityCourses_default", 
    "CommunityCourses/{controller}/{action}/{id}", 
    new {controller="NameOfController", action = "Index", id = UrlParameter.Optional } 
); 

控制器=「娜meOfController「是我已經嘗試添加到生成的代碼,但它只適用於單個控制器。

編輯:我重命名我的文件的命名空間使用區域內的PROJECTNAME.AREANAME,這是否會導致問題?我認爲它會以非常規方式簡化我的進口。

我缺少什麼?我注意到了很多關於SO的領域的問題,並試圖在沒有成功的情況下遵循答案。這個問題困擾了我一整天的大部分時間,任何幫助將不勝感激!

回答

2

如果從Controllers文件夾移動的文件或意見在項目的根文件夾到控制器或查看包含在{AREANAME}文件夾中的文件夾,然後將所有這些文件的移動需要他們的命名空間從{ProjectName}.{*etCetera}改爲:

{ProjectName}.Areas.{AreaName}.{*etCetera} 
+0

我將每個區域中所有文件的命名空間更改爲{ProjectName}。{AreaName},是否打破了路線查找器的工作方式?我開始認爲問題來自哪裏,我可以使用{ProjectName} .Areas。{AreaName}作爲我區域內所有文件的命名空間嗎? – Valchris

+0

不完全。例如,控制器應該位於命名空間'{ProjectName} .Areas。{AreaName} .Controllers'中。 – counsellorben

+0

我的問題是MVC3需要這個命名空間的命名約定嗎?我知道這是默認的,但它是否有必要? – Valchris

1

Route Debugger showing the routing is incorrect

原來什麼是錯的是,訂單或路由是不正確的,它是處理{控制器}/{行動}/{ID}首先這是打破我的領域。移動

AreaRegistration.RegisterAllAreas(); 

到我的application_start的頂部解決了我的問題。

http://haacked.com/archive/2011/04/13/routedebugger-2.aspx鏈接到我用來查找問題的工具,不幸的是,該工具的當前版本無法在默認的404頁面上工作,所以我還必須創建一個自定義404頁面才能工作。