背景
本文假設您已經熟悉了 ASP.NET MVC 的常規開發方式、執行模型和關鍵擴展點,這里主要說一下如何使用 ASP.NET MVC 的源代碼解決一些問題。
如何將 Area 中的 Controller 放到獨立的程序集?
為了更好的組合代碼,我們都會使用 Area 划分我們的項目,也會把 Controller 移動到獨立的程序集,多數情況這回導致問題。
項目結構
問題出現在哪里了?
初步原因分析是 DefaultController 的 Namespace 不匹配 TestAreaRegistration 的 Namespace,我們把 DefaultController 的 Namespace 修改的成 TestAreaRegistration 的 Namespace,然后就OK了。
看到這里基本就可以解決問題了,我們可以修改 AreaRegistrationContext 的 Namespaces,
深入 MVC 源代碼
想了解 AreaRegistrationContext 的 Namespaces 如何構造的就需要看 MVC 的源代碼了,見下圖:
看到了 GetType.Namespace; 是不是就悟了,不難想象 AreaRegistrationContext.MapRoute 使用了他的 Namespaces 屬性,見下圖:
備注
如果你對 MVC 路由中的 Namespace 有所理解,解決本文的問題會有很多方案,這里不再贅述。