我们的一些控制器变得太大了,所以我试图通过以下方式进行重构来简化它们:
Areas
Vehicles
Controllers
Cars
CarController.cs
Engines
PistonController.cs
...
Models
Views
Cars
EditCar.ascx
Engines
EditPiston.ascx
ShowPiston.ascx
Animals
...
(名称空间与文件夹结构匹配)
我尝试了一些变体,但无法通过MVC推断来识别我的项目结构。
部分视图在动作中返回的内容是什么?即,使用简单return PartialView(piston)
的EditPiston操作想要使用视图Views-> Engines -> EditPiston.ascx
,而不是Views-> Cars->Engines -> EditPiston.ascx
。
另外,我在RegisterArea需要做什么?我需要设置的任何特定路线?
答案 0 :(得分:1)
开箱即用,您无法使用标准惯例执行此操作。
当然,您可以直接指定视图位置。即:
return View("~/Areas/Views/Vehicles/Cars/Engines/Piston.cshtml");
另一种选择是创建自己的从RazorViewEngine派生的View Engine,它会添加更多的搜索路径,但是你应该知道这些路径将搜索每个页面渲染,如果你有大量的搜索,可能会显着降低性能路径。
创建自己的ViewEngine的示例如下:
Can I specify a custom location to "search for views" in ASP.NET MVC?