什么是ViewImports文件 ?
在ASP.NET Core Razor Pages(或者ASP.NET Core MVC)项目中,如果使用.NET自带的脚手架生成,默认在[/Pages/]目录(MVC项目在[/Views/])中会生成一个_ViewImports.cshtml
文件,这个文件即是ViewImports文件,它是用来在Razor视图引擎中导入一些公共指令的文件。
ViewImports文件可以导入名称空间、添加标签帮助类的引用,或者执行依赖注入。如果一个指令会被项目中的多个视图文件使用,这时可以考虑在ViewImports文件中来导入。可以减少很多重复导入的代码。
_ViewImports.cshtml
文件支持的指令有如下几种:
注意: 在
_ViewImports.cshtml
文件中,除了以上的指令外,不支持其他任何的Razor功能,比如functions
或者sections
等的定义。
以下是一个ViewImports
文件的示例:
@using WebApplication1
@using WebApplication1.Models
@using WebApplication1.Models.AccountViewModels
@using WebApplication1.Models.ManageViewModels
@using Microsoft.AspNetCore.Identity
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
ViewImports文件的存放位置
默认情况下,_ViewImports.cshtml
文件是放在[/Pages/]目录中的。
当然,_ViewImports.cshtml
文件也可以放在任何文件夹中,在这种情况下,它将只应用于该文件夹及其子文件夹中的视图。
在Razor Pages应用程序中,_ViewImports.cshtml
文件的个数没有做任何限制。因此,你可以在一个Razor Pages应用程序中创建多个_ViewImports.cshtml
文件,并将它们分别放在不同的子文件夹。
但要特别注意的是:_ViewImports
文件从根级别开始处理,然后对每个文件夹进行处理,直到指向视图本身的位置,因此在根级别指定的设置可能会被子文件夹级别的_ViewImports
设置所重写和覆盖。
比如,如果根目录的_ViewImports.cshtml
文件指定了@model
和@addTagHelper
。其位于子文件夹中也指定了一个_ViewImports.cshtml
文件并且指定了一个不同的@model
和另一个@addTagHelper
指令。那么,在这种情况下,视图将可以访问并使用这两个@addTagHelper
导入的标签Tag Helper
,对@model
而言,前面导入的将被后面子文件夹ViewImports
导入的所覆盖。
如果一个Razor Pages应用程序中有多个_ViewImports.cshtml
文件,那么Razor视图引擎将会导入的指令进行合并或者覆盖,具体如下:
@addTagHelper
,@removeTagHelper
: 所有指令有效,并按导入的选择顺序调用@tagHelperPrefix
: 越靠近视图文件的有效,前面导入的将被覆盖@model
: 越靠近视图文件的有效,前面导入的将被覆盖@inherits
: 越靠近视图文件的有效,前面导入的将被覆盖using
: 所有的引用均会被导入,重复的将被忽略inject
: 对于每个属性,最接近视图的属性将覆盖具有相同属性名的任何其他属性
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册