我正在分裂的MVC3應用程序分爲兩個區域。現有的應用程序正在進入一個區域(V1),我們正在第二個區域(V2)開始重新設計。MVC3 RouteHandler結果忽略已解決路由中的Area - 爲什麼?
我已將視圖,模型,控制器等全部移入MyApp \ Areas \ V1 \ xxx文件夾,並且我已經能夠驗證事物正在加載,因爲它們應該是大部分。我感動了所有的V1路由註冊到V1AreaRegistration.cs文件,並修改它使用context.MapRoute
,而不是RouteTable.Routes.MapRoute
。
尋找與菲爾哈克的RouteDebugger路由,一切看起來不錯 - 我V2路由解決,因爲他們應該,基本路線V1工作。什麼是不工作是V1的路線,我已經定義像這樣的自定義MvcRouteHandler
:
context.MapRoute(
"MyRouteName",
"{myRouteVal}/{controller}/{action}",
new { area = "V1", controller = "DefaultController", action = "Index" },
new { controller = _someRouteConstraint},
new string[] { "My.Custom.Project.WebLibrary.Areas.V1.Controllers" },
_myCustomRouteHandler);
如果我從這次通話中刪除_myCustomRouteHandler
,它的偉大工程,把我送到了V1區下正確的觀點。有了它的地方,路由似乎忽略它註冊爲地區航線的事實,我也得到一個黃色的錯誤頁面,上面寫着:
The view 'Index' or its master was not found or no view engine
supports the searched locations. The following locations were searched:
~/Views/DefaultController/Index.cshtml
~/Views/DefaultController/Index.vbhtml
~/Views/Shared/Index.cshtml
~/Views/Shared/Index.vbhtml
~/Views/DefaultController/Index.aspx
~/Views/DefaultController/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx
我需要能夠使用路由處理程序 - 它對{myRoutVal}
參數執行一些驗證工作,如果該參數無效,則重定向到錯誤頁面。
幫助!!