多个_ViewImports?

时间:2019-06-18 15:44:49

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

我可以有多个_ViewImports.cshtml文件吗?我不想跨所有视图导入某些名称空间,而是跨视图的某些子集导入。我的目标是使用成分来清楚地了解谁需要哪些进口商品。

示例:

+---Controllers  
|       OrdersController.cs  
|       ProductsController.cs  
|  
\---Views  
    |   _ViewImports.cshtml  //global using
    |  
    +---Orders  
    |       Index.cshtml  
    |       _ViewImports.cshtml  //using's specific to Orders
    |  
    \---Products  
            Index.cshtml  
            _ViewImports.cshtml  //using's specific to Products

在上面,Products下的任何视图都获得全局using + 产品using的。我想要达到的目标感觉“更干净”?。这样我可以告诉谁使用了什么。有什么想法吗? ?

我在文档页面Importing Shared Directives上看不到任何描述此场景的信息。也许我错过了吗?

2 个答案:

答案 0 :(得分:1)

是的,例如,您可以在常规_ViewImports.cshtml文件夹下以及Views的{​​{1}}文件夹下拥有多个Views

enter image description here

他们当然可以导入子集所需的内容。

就我而言,呈现该区域的视图时,它将首先查找为该区域定义的Areas_ViewStart.cshtml。如果找不到,它会出去寻找一般的。

这是您要问的吗?

答案 1 :(得分:0)

支持多个_ViewImports.cshtml,合成也可以,但是不会越过区域边界。

+---Areas  
|   \---Admin  
|       +---Controllers  
|       |       AdminController.cs  
|       |  
|       +---Models  
|       |       AdminModel.cs  
|       |  
|       \---Views  
|           |   _ViewImports.cshtml  
|           |  
|           \---Admin  
|                   Index.cshtml  //sees .\ViewImports.csthml
                                  //and \Areas\AdminViews\ViewImports.csthml
                                  //DOESN'T see \Views\ViewImports.csthml
|                   _ViewImports.cshtml  
|  
+---Controllers  
|       OrdersController.cs  
|       ProductsController.cs  
|  
\---Views  
    |   _ViewImports.cshtml  
    |  
    +---Orders  
    |       Index.cshtml  //sees .\ViewImports.csthml and \Views\ViewImports.csthml
    |       _ViewImports.cshtml  
    |  
    \---Products  
            Index.cshtml  //sees .\ViewImports.csthml and \Views\ViewImports.csthml
            _ViewImports.cshtml

Demo Project