@using 和 @namespace 指令在 Razor _ViewImports.cshtml 文件中有什么作用?

won*_*rld 3 asp.net asp.net-mvc razor-pages

Razor _ViewImports.cshtml 文件中的指令@using@namespace指令有什么作用?

@using TagHelpersBuiltIn @namespace TagHelpersBuiltIn.Pages @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

_ViewImports.cshtml

Ant*_*ers 5

什么是 _ViewImports.cshtml`?

_ViewImports.cshtml用于声明驻留在包含_ViewImports.cshtml文件的文件夹中的视图的所有导入。它还用于为驻留在该文件夹中的所有视图声明命名空间,此外,还用于声明应可用于驻留在该文件夹中的视图的任何标记助手。

@命名空间

文件中的@namespace指令_ViewImports.cshtml用于声明 Razor 视图/页面的根命名空间。_ViewImports.cshtml大多数项目的默认生成文件将具有@namespace MyProjectName.Pages. 您的_ViewImports.cshtml文件中应该只有这些声明之一,如果有多个,则最后一个将“获胜”,其余的将无效。该@namespace指令类似于为 C# 类文件声明命名空间。这只是允许为文件夹中的所有视图声明命名空间,而不必在每个视图中声明命名空间。

@使用

@using用于为文件夹内的所有视图添加导入。例如:如果您的_ViewImports.cshtml文件包含@using Microsoft.AspNetCore.Identity,则该文件夹下的任何视图都可以访问Microsoft.AspNetCore.Identity命名空间的成员,而无需通过@using指令显式导入它们。

@addTagHelper

@addTagHelper用于声明应可用于包含_ViewImports.cshtml文件的文件夹中的视图的所有标签助手。默认项目模板通常@addTagHelper在根_ViewImports.cshtml文件中包含以下指令:@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers.

附加信息

需要注意的是_ViewImports.cshtmlViewsPages根目录下的文件也适用于ViewsPages文件夹的所有子目录。您还可以_ViewImports.cshtml在子目录中添加一个文件,以添加仅应用于该子目录中的视图的其他 using 语句。还值得注意的是,至少对于 Razor Pages 而言,即使根_ViewImports.cshtml文件将命名空间声明为@namespace MyProject.Pages,其中的视图MyProject\Pages\ASubDirectory也会自动获得命名空间,MyProject.Pages.ASubDirectory而无需添加另一个_ViewImports.cshtml文件来声明 中的命名空间MyProject\Pages\ASubDirectory

归因

这个答案最初是对 Coding Yoshi 的答案的编辑。因此,部分答案基于 Coding Yoshi 的答案。