在ASP.NET MVC 3中的子文件夹中添加视图

Kai*_*ane 17 asp.net-mvc asp.net-mvc-3

我正在研究ASP.NET MVC 3项目.为简单起见,我想在子文件夹中划分控制器,模型和视图.我能够用控制器和模型做到这一点,但是当我创建一个视图时,它会自动创建到根文件夹Views,有没有办法解决这个问题?

例如.我可以创造

模型类为,

Models/Finance/Bank.cs
Models/Finance/Finance.cs
Models/Production/Production.cs
Run Code Online (Sandbox Code Playgroud)

控制器,

Controllers/Finance/BankController/Create
Controllers/Finance/BudgetController/Create
Controllers/Production/ProcessController/Create
Run Code Online (Sandbox Code Playgroud)

但是我试图为上面的动作创建视图,它创建于,

Views/Bank/Create.aspx
Views/Budget/Create.aspx
Views/Process/Create.aspx
Run Code Online (Sandbox Code Playgroud)

我希望它应该像,

Views/Finance/Bank/Create.aspx
Views/Finance/Budget/Create.aspx
Views/Prodution/Process/Create.aspx
Run Code Online (Sandbox Code Playgroud)

有没有办法在与为控制器和模型创建的子文件夹相同的子文件夹中创建视图?谢谢!

Kai*_*ane 27

以下步骤对我有用,

  1. 根据需要在Views(根文件夹)中创建子文件夹.就我而言,它是金融与生产.

  2. 只需将自动创建的文件夹拖入Views适当的子文件夹即可.在我的情况BankBudgetFinanceProcessProduction

  3. 从控制器操作返回视图时,请提供完整的视图路径,

    return View("~/Views/Finance/Bank/Create.aspx")

    return View("~/Views/Finance/Budget/Create.aspx")

    return View("~/Views/Production/Process/Create.aspx")

  • 这就是@Mystere Man所建议的,没有理由再写一个答案,只是将他的答案标记为已被接受 (3认同)
  • 它也适用于 razor cshtml。示例:“return View(”~/Views/SomeSubFolder/Login.cshtml”); (3认同)

Eri*_*sch 19

模型和控制器是编译的源文件.它们被编译成一个DLL,因此,它们可以放在项目的任何地方,它不会有所作为.这些类没有它们在文件系统中的位置的概念,因为它们在编译后不存在于文件系统中.

另一方面,观点是不同的.它们是部署到服务器并在运行时加载和解析的文本文件,因此框架必须知道在哪里找到它们.

工具将始终在〜\ Views\Controller文件夹(或~Version\AreaName\Controller文件夹)中创建视图.您可以在此之后将它们移动到任何位置,但是您必须将整个文件夹路径提供给View()方法(包括.cshtml).或者,您必须实现一个自定义ViewEngine,将搜索路径设置在您想要的位置.