MVC嵌套控制器和视图

时间:2014-06-10 10:51:35

标签: c# .net asp.net-mvc-4

我们的一些控制器变得太大了,所以我试图通过以下方式进行重构来简化它们:

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需要做什么?我需要设置的任何特定路线?

1 个答案:

答案 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?