我正在開發一個ASP.NET MVC 5項目,我想在這個post上顯示Jimmy Bogard應用的「Feature-Driven design」。但是我想修改自己的設計到功能分成由角色的另一細分,所以我的計劃是有我的ASP.NET MVC項目以這種方式構成:修改MVC項目來定位控制器在我的基於特徵的自定義路徑
MyRoleFeatureProject ├── Roles │ ├── Manager │ │ ├── Features │ │ │ ├── Index │ │ │ │ ├── Index.cshtml │ │ │ │ ├── Index.js │ │ │ │ ├── IndexController.cs │ │ │ ├── Invoice │ │ │ │ ├── Invoice.cshtml │ │ │ │ ├── Invoice.js │ │ │ │ ├── InvoiceController.cs │ ├── Admin │ │ ├── Features │ │ │ ├── Index │ │ │ │ ├── Index.cshtml │ │ │ │ ├── Index.js │ │ │ │ ├── IndexController.cs │ │ │ ├── UserManagement │ │ │ │ ├── UserManagement.cshtml │ │ │ │ ├── UserManagement.js │ │ │ │ ├── UserManagementController.cs │ ├── Operator │ │ ├── Features │ │ │ ├── Index │ │ │ │ ├── Index.cshtml │ │ │ │ ├── Index.js │ │ │ │ ├── IndexController.cs │ │ │ ├── Shipping │ │ │ │ ├── Shipping.cshtml │ │ │ │ ├── Shipping.js │ │ │ │ ├── ShippingController.cs │ ├── Anonymous │ │ ├── Features │ │ │ ├── LogIn │ │ │ │ ├── LogIn.cshtml │ │ │ │ ├── LogIn.js │ │ │ │ ├── LogInController.cs │ │ │ ├── Register │ │ │ │ ├── Register.cshtml │ │ │ │ ├── Register.js │ │ │ │ ├── RegisterController.cs │ │ │ ├── ForgotPassword │ │ │ │ ├── ForgotPassword.cshtml │ │ │ │ ├── ForgotPassword.js │ │ │ │ ├── ForgotPasswordController.cs │ ├── Shared │ │ ├── _ManagerLayout.cshtml │ │ ├── _AdminLayout.cshtml │ │ ├── _OperatorLayout.cshtml │ │ ├── _AnonymousLayout.cshtml │ ├── _ViewStart.cshtml │ ├── Web.config ├── Images ├── Scripts ├── Styles ├── Web.config
我跟着一些在線指南,我知道我需要創建一個繼承自DefaultControllerFactory控制器的自定義位置,另一個從繼承RazorViewEngine視圖的自定義位置,但我無法配置它們以匹配位置I在我的樹圖中顯示你,這就是爲什麼我要求你的幫助。
我不擅長ASP.NET MVC,這是我第一次嘗試在我學習新事物的方式上實現這個設計。我真的想得到這個工作。
感謝您的指導。
更新1
看到從@IvanGritsenko答案後,我注意到,每個控制器必須能夠處理多個操作(該功能),而且很多角色可能具備的功能(控制器)與相同的名稱,例如「索引」,每個角色都會有一個索引,它將是一個自定義的「儀表板」(顯示該角色的自定義信息)。
有關思考,我認爲這將是巨大的,如果:
1)通過某種方式的用戶已登錄後,我可以解決控制器的位置。所以,如果我查找索引控制器,它可以在特定的角色文件夾中查找它。
或者
2)路由被修改的用戶已登錄在後向模式/角色/控制器/功能相匹配。
覆蓋'RazorViewEngine.FindView','RazorViewEngine。FindPartialView' –
@IvanGritsenko我已經做到了,但我無法弄清楚寫出控制器和視圖的位置格式的正確形式 –
根據Jimmy Bogard提供的ContosoUniversity示例(https://github.com/jbogard/ContosoUniversity/ blob/master/src/ContosoUniversity/Infrastructure/FeatureViewLocationRazorViewEngine.cs),他的路由很簡單'Features/{controller}/{action}' –