我有一個網站與「一般」路線結構,和一個額外的「翻譯」區域。因此,在頂層,你有這樣的:ASP.NET MVC路由 - 所有看起來匹配正確的路由模板,但不工作
- /
- /關於( 「通用」)
- /翻譯(區)
內轉換區,我有:
- /轉換/字(WordController,索引操作)
- /轉換/字/添加(WordControll呃,添加動作)
- /轉換/字/改善(WordController,提高動作)
所有這些工作。
然而,只要我添加一個進一步的控制器到現有的結構,例如。定義...
- /轉換/定義(DefinitionController,索引操作)
- /轉換/清晰度/添加(DefinitionController,添加動作)
或發音......
- /Translate/Pronunciation(PronunciationController,Index action)
- /Translate/Pronunciation/Add(PronunciationController,Add acti上)
我得到的是一個404
我區的路由配置低於:
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Translate_direct",
"Translate/{controller}/{action}",
new { action = "Index", controller = "Default", }
);
context.MapRoute(
"Translate_default",
"Translate/{toLanguageCode}/{query}/{fromLanguageCode}/{controller}/{section}/{action}/{id}",
new { action = "Index", controller="Default", id = UrlParameter.Optional, section=UrlParameter.Optional }
);
}
我已經安裝了Phil Haack's RouteDebugger並得到了以下結果:
因此,它似乎與控制器和操作相匹配,但我只是得到404.
的完整性和保證,也顯示我的「MVC」文件結構:
我清楚地失去了一些東西很明顯,但不知道是什麼...?
更新:
看來我的命名空間在某種程度上參與。
我的TranslateAreaRegistration類具有名稱空間Taggloo.Web.Client.Areas。Translate但我的PronunciationController有一個* Taggloo.Web。** Mvc的命名空間。** Client.Areas.Translate.Controllers *
看來我的命名空間中導致二者不同的錯誤(TranslateAreRegistration類應該在Taggloo.Web.Mvc.Client.Areas.Translate命名空間中)也是問題所在。我試圖讓他們都Taggloo.Web.Mvc ....但這沒有奏效。我勉強地設置爲Taggloo.Web.Client ...而不是現在它的工作原理。
所以不是一個解決方案,一個解決方法,儘管環顧四周,我仍然不明白爲什麼。
您好, 所有你想要的是在所有的控制器中有相同的命名空間。 我的兩個控制器分別位於不同的文件夾中,即Log和Error。 似乎都與我一起工作 例如, '代碼 命名空間Web.Controllers { 公共類LogController:控制器 {} } 命名空間Web.Controllers { 公共類ErrorController:控制器 {} } ' 阿 –
,由於@NipunAmbastha 。似乎我錯過了我的一個控制器。 –
很高興,我可以幫你:) –