_ViewStart.cshtml在ASP.NET MVC就存在了,而ASP.NET Core MVC则多了一个_ViewImports.cshtml,这两个都会对View有全域性的影响,重新来了解一下_ViewStart.cshtml及新多的_ViewImports.cshtml的作用。
_ViewStart.cshtml
_ViewStart.cshtml顾名思义,就是在View开始执行之前执行,而且是每一个View,预设ASP.NET Core MVC专案开起来之后,就有产生一个/Views/_ViewStart.cshtml,其内容为:
@{
Layout = "_Layout";
}
一般在里面设置“母版页”值,当然也可以在里面设置你想设置的东西。
_ViewImports.cshtml
_ViewImports.cshtml是放一些要引用的命名空间,预设的ASP.NET Core MVC专案就有一个/Views/_ViewImports.cshtml,其内容为:
@using [项目命名空间] @using [项目命名空间].Models @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
之后的每一个View 就不用再引用这些命名空间,与_ViewStart.cshtml 一样,可以为不同的Controller、不同的Area 增加_ViewImports.cshtml
关于_ViewImports.chtml使用效果范围
如只在Home下添加了一个_ViewImports.cshtml
@using WebApplication2 @using WebApplication2.Models @using System.Text.Json @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
新增了 System.Text.Json 命名空间,只对 Home 文件夹下的视图有效。
则Test下的视图使用不到该命名空间
如需Test也可以使用需要在有效的范围创建 _ViewImports.cshtml 并在其中写入引用命名空间代码
@inject指令
@inject指令使 Razor 页面可以将服务从服务容器注入到视图。 有关详细信息,请参阅视图中的依赖关系注入。
@using WebApplication2 @using WebApplication2.Models @using System.Text.Json @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @inject Itest test
官方文档:
https://docs.microsoft.com/zh-cn/aspnet/core/mvc/views/razor?view=aspnetcore-5.0#inject
@inherits指令
@inherits 指令对视图继承的类提供完全控制:
@inherits 类型要继承的类的名称
下面的代码是一个自定义的 Razor 页类型:
namespace WebApplication2
{
///
/// Web view page
///
/// Model
public abstract class CustomRazorPage : Microsoft.AspNetCore.Mvc.Razor.RazorPage
{
///
/// Get a localized resources
///
public string T { get; set; } = "default T";
}
}
CSHTML:
@inherits CustomRazorPage@{ ViewData["Title"] = "Home Page"; } @T
Learn about building Web apps with ASP.NET Core.
(ps:如果不想写"
////// Web view page /// ///Model public abstract class CustomRazorPage : CustomRazorPage{ }
HTML:
default T
Learn about building Web apps with ASP.NET Core.
@model 和 @inherits 可在同一视图中使用。 一般@inherits 直接用于视图导入的 _ViewImports.cshtml 文件中,但是这里演示就直接丢在同一个视图中了。
官方文档:
https://docs.microsoft.com/zh-cn/aspnet/core/mvc/views/razor?view=aspnetcore-5.0#inherits
(ps:asp.net mvc 参考 https://www.yuque.com/liujiahao-rr8fu/gx4p4y/kohygc )
@addTagHelpe标记帮助程序
https://www.yuque.com/liujiahao-rr8fu/gx4p4y/zx0ue5



