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

Asp.net mvc 在ASP.NET MVC 3的子文件夹中添加视图,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我正在从事ASP.NETMVC3项目。为了简单起见,我想在子文件夹中划分控制器、模型和视图。我可以用控制器和模型来实现这一点,但是当我创建一个视图时,它会自动创建到根文件夹视图,有什么方法可以解决这个问题吗 我会创造 模型类as Models/Finance/Bank.cs Models/Finance/Finance.cs Models/Production/Production.cs 控制器as Controllers/Finance/BankController/Create Contr

我正在从事ASP.NETMVC3项目。为了简单起见,我想在子文件夹中划分控制器、模型和视图。我可以用控制器和模型来实现这一点,但是当我创建一个视图时,它会自动创建到根文件夹
视图
,有什么方法可以解决这个问题吗

我会创造

模型类as

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
但当我试图为上述操作创建视图时,它创建了

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

是否有任何方法可以在为控制器和模型创建的子文件夹中创建视图?谢谢

模型和控制器是编译的源文件。它们被编译成DLL,因此,它们可以放在项目中的任何地方,这不会有什么区别。这些类不知道它们在文件系统中的位置,因为一旦编译,它们就不存在于文件系统中

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


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

视图的命名取决于控制器的名称,您应该遵循该规则。

如果您想创建
Views/Admin/create
,那么您的
CustomerController.cs
应该命名为
AdminController.cs

以下步骤对我有用

  • 视图中创建所需的子文件夹(根文件夹)。就我而言,是金融与生产

  • 只需将
    视图中自动创建的文件夹拖动到相应的子文件夹中即可。在我的案例中,
    银行
    预算
    转入
    财务
    流程
    转入
    生产

  • 从控制器操作返回视图时,请提供完整的视图路径,如下所示:

    返回
    查看(~/Views/Finance/Bank/Create.aspx”)

    返回
    查看(~/Views/Finance/Budget/Create.aspx”)

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


  • 未来访客:使用区域


    这里有些不对劲。
    CustomerController
    不需要两个文件夹。这是@Mystere-Man建议的,没有理由再写一个答案,只需将他的答案标记为acceptedIt也适用于razor cshtml。示例:“返回视图(“~/Views/SomeSubFolder/Login.cshtml”);这是可行的,但如果我们有viewmodel pass来查看呢?这如何转化为子客户?例如,
    Views/Admin/Customers/Create
    ,其中我有一个
    AdminController
    和一个
    CustomerController
    子客户。这并不是回答最初的问题。嗨,我可以将两者结合起来吗?例如,大多数人都会使用
    ~\Views\Controller
    。在一些情况下,我需要使用
    ~Areas\AreaName\Controller
    。这样可以吗?如果我使用
    ~Areas\AreaName\Controller
    ,我是否需要提供View()方法的整个文件夹路径?