c# - MVC 嵌套 Controller 和 View

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

我们的一些 Controller 变得太大了,所以我试图通过重构来简化它们:

Areas
    Vehicles
        Controllers
            Cars
                CarController.cs
                Engines
                    PistonController.cs
                    ...
        Models
        Views
            Cars
                EditCar.ascx
                Engines
                    EditPiston.ascx
                    ShowPiston.ascx
    Animals
    ...

(命名空间与文件夹结构匹配)

我尝试了一些变体,但无法让 MVC 推理识别我的项目结构。

局部 View 返回在 Action 中是什么样子的?即,具有简单 return PartialView(piston) 的 EditPiston 操作想要使用 View Views-> Engines -> EditPiston.ascx,而不是 Views-> Cars->引擎 -> EditPiston.ascx

还有,我需要在注册区做什么?我需要设置任何特定路线吗?

最佳答案

开箱即用,您不能使用标准约定来执行此操作。

当然,您可以直接指定 View 位置。即:

return View("~/Areas/Views/Vehicles/Cars/Engines/Piston.cshtml");

另一种选择是创建您自己的派生自 RazorViewEngine 的 View 引擎,它会添加更多搜索路径,但是您应该知道这些路径将搜索每个页面呈现,并且如果您有大量搜索,可能会显着降低性能路径。

此处是创建您自己的 ViewEngine 的示例:

Can I specify a custom location to "search for views" in ASP.NET MVC?

关于c# - MVC 嵌套 Controller 和 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24139154/

相关文章:

c# - 在图形 API 中使用 GUID 获取共享点列表项

.net - Entity Framework - 模型生成错误 : '' ', 十六进制值 0x1F,是无效字符

c# - C# 中 File.Replace 和 (File.Delete+File.Move) 的区别

c# - 为什么 SignedCms.ComputeSignature() 方法抛出 "Provider' s 公钥无效”异常?

javascript - 如何从外部js文件方法调用内部脚本函数?

.net - Html.EditorFor(...) 如何知道循环的索引和项目?

asp.net - ASP.NET MVC 中的 URL 长度 - 超过 260 个字符会导致错误请求 - 无效的 URL

c# - XML 文档中的错误 (2,2)

c# - 使用 mono 中的 freepascal 库 (.dylib)

c# - 在 C# (MVC2) 中从给定列表创建随机值列表