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

时间:2012-10-25 05:37:00

标签: asp.net-mvc asp.net-mvc-3

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

例如。我可以创建

模型类为,

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

控制器as,

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

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

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 个答案:

答案 0 :(得分:26)

以下步骤对我有用,

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

  2. 只需将Views中自动创建的文件夹拖到相应的子文件夹中即可。就我而言Bank& Budget进入FinanceProcess进入Production

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

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

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

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

答案 1 :(得分:19)

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

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

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

答案 2 :(得分:2)

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

Walkthrough: Organizing an ASP.NET MVC Application using Areas

答案 3 :(得分:-1)

View的命名是根据Controller的名称,你应该遵循规则 如果您想创建Views/Admin/Create,则应将CustomerController.cs命名为AdminController.cs