19

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

例如。我可以创造

模型类为,

Models/Finance/Bank.cs
Models/Finance/Finance.cs
Models/Production/Production.cs

控制器作为,

Controllers/Finance/BankController/Create
Controllers/Finance/BudgetController/Create
Controllers/Production/ProcessController/Create

但是在我尝试为上述操作创建视图的地方,它创建到,

Views/Bank/Create.aspx
Views/Budget/Create.aspx
Views/Process/Create.aspx

我希望它应该是这样的,

Views/Finance/Bank/Create.aspx
Views/Finance/Budget/Create.aspx
Views/Prodution/Process/Create.aspx

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

4

4 回答 4

33

以下步骤对我有用,

  1. Views在(根文件夹)中根据需要创建子文件夹。就我而言,它是财务和生产。

  2. 只需将自动创建的文件夹拖入Views适当的子文件夹即可。在我的情况下Bank& Budgetin toFinanceProcessin toProduction

  3. 当您从控制器操作返回视图时,给出完整的视图路径,

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

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

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

于 2012-10-25T06:18:34.430 回答
20

模型和控制器是编译的源文件。它们被编译成 DLL,因此,它们实际上可以放在项目中的任何位置,并且不会产生任何影响。这些类不知道它们在文件系统中的位置,因为一旦编译它们就不会存在于文件系统中。

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

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

于 2012-10-25T05:47:03.513 回答
3

对于未来的访客:使用区域。

演练:使用区域组织 ASP.NET MVC 应用程序

于 2016-06-20T08:57:24.140 回答
-1

视图的命名是根据控制器的名称,你应该遵守规则。
如果你想创建它Views/Admin/Create,那么你CustomerController.cs应该命名为AdminController.cs.

于 2012-10-25T06:10:36.133 回答