_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
{/// <summary>/// Web view page/// </summary>/// <typeparam name="TModel">Model</typeparam>public abstract class CustomRazorPage<TModel> : Microsoft.AspNetCore.Mvc.Razor.RazorPage<TModel>{/// <summary>/// Get a localized resources/// </summary>public string T { get; set; } = "default T";}
}

CSHTML:

@inherits CustomRazorPage<TModel>@{ViewData["Title"] = "Home Page";
}
<div class="text-center"><h1 class="display-4">@T</h1><p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>

(ps:如果不想写"<TModel>",一般如下 写一个没有TModel参数的类来继承CustomRazorPage<TModel>)

    /// <summary>/// Web view page/// </summary>/// <typeparam name="TModel">Model</typeparam>public abstract class CustomRazorPage : CustomRazorPage<dynamic>{}

HTML:

<div class="text-center"><h1 class="display-4">default T</h1><p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>

@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

Asp.Net Core 中_ViewStart.cshtml 及_ViewImports.cshtml 的作用相关推荐

  1. 重学ASP.NET Core 中的标记帮助程序

    标记帮助程序是什么 标记帮助程序使服务器端代码可以在 Razor 文件中参与创建和呈现 HTML 元素. 例如,内置的 ImageTagHelper 可以将版本号追加到图片名称.  每当图片发生变化时 ...

  2. .ASP NET Core中缓存问题案例

    本篇博客中,我将描述一个关于会话状态(Session State)的问题, 这个问题我已经被询问了好几次了. 问题的场景 创建一个新的ASP.NET Core应用程序 一个用户在会话状态中设置了一个字 ...

  3. NLog在asp.net core中的应用

    Asp.net core中,自带的Log是在当selfhost运行时,在控制台中输出,不便于查阅,如果用一个log架框,把日志持久化,便于查询. NLog是一个免费的日志记录框架,专门为.net平台下 ...

  4. 如何在 ASP.Net Core 中使用 MiniProfiler

    web应用程序的性能相信是大家普遍关心的一个问题,也相信大家有很多工具可用来分析应用程序的性能并能够找到其中的瓶颈,MiniProfiler 就是这个领域中的一款产品,它是一款简单的,功能强大的web ...

  5. 如何在 ASP.NET Core 中实现全局异常拦截

    异常是一种运行时错误,当异常没有得到适当的处理,很可能会导致你的程序意外终止,这篇就来讨论一下如何在 ASP.Net Core MVC 中实现全局异常处理,我会用一些 样例代码 和 截图 来说明这些概 ...

  6. 为什么我的会话状态在ASP.NET Core中不工作了?

    原文:Why isn't my session state working in ASP.NET Core? Session state, GDPR, and non-essential cookie ...

  7. 如何在 ASP.NET Core 中发送邮件

    前言 我们知道目前 .NET Core 还不支持 SMTP 协议,当我么在使用到发送邮件功能的时候,需要借助于一些第三方组件来达到目的,今天给大家介绍两款开源的邮件发送组件,它们分别是 MailKit ...

  8. 在ASP.NET Core中使用Angular2,以及与Angular2的Token base身份认证

    Angular2是对Angular1的一次彻底的,破坏性的更新. 相对于Angular1.x,借用某果的广告语,唯一的不同,就是处处都不同. 首先,推荐的语言已经不再是Javascript,取而代之的 ...

  9. 获取异常信息_如何在 ASP.NET Core 中实现全局异常拦截

    异常是一种运行时错误,当异常没有得到适当的处理,很可能会导致你的程序意外终止,这篇就来讨论一下如何在 ASP.Net Core MVC 中实现全局异常处理,我会用一些 样例代码 和 截图 来说明这些概 ...

最新文章

  1. 为什么大家都做不好社交这件事?
  2. [css] 圣杯布局和双飞翼布局的理解和区别,并用代码实现
  3. linux grub rescue 光盘,Ubuntu9.10用安装光盘如何进入linux rescue方式?
  4. [pandas]方法总结
  5. spring + springmvc + mybatis + mysql 整合使用案例
  6. java httpclient 下载文件_httpclient 上传文件、下载文件
  7. wegame饥荒一直连接中_英雄联盟手游:腾讯WeGame发布了,可以玩云顶之弈自走棋...
  8. Java学习笔记——JDBC之与数据库MySQL的连接以及增删改查等操作
  9. SubSnoic 框架入门到提高(4)---全程记录
  10. Arduino Uno 实验7——SG90舵机
  11. JavaScript设计模式——观察者模式
  12. win10升级补丁_官方win10教育版怎么样
  13. 谷歌搜索广告如何根据国家市场定点投放
  14. 扎根黄金赛道,尚未盈利的捍宇医疗如何遨游行业蓝海?
  15. 数字游戏 -- 寻找缺失的数字
  16. 央央家政解读:月嫂服务内容和标准
  17. 【STM32H7教程】第7章 STM32H7下载和调试方法(IAR8)
  18. python 美团api接口对接_美团券对接API文档
  19. mac苹果电脑删除顽固残留软件图标
  20. openwrt 配置WAN 和 LAN

热门文章

  1. 解决MATLAB高版本启动较慢问题
  2. 谷歌五笔输入法电脑版_新手学拼音还是学五笔打字(看完你就明白)
  3. 最全Pycharm教程(1)——定制外观
  4. vs2015 无法启动程序 系统找不到指定的文件
  5. 如何从官网下载STM32固件库
  6. oracle之trunc函数
  7. 狂神系列之HTML学习笔记
  8. 淘宝用户行为统计分析-python
  9. 本地的项目上传到 Git 仓库的步骤-超详细
  10. python怎么保存到桌面_python3应用windows api对后台程序窗口及桌面截图并保存的方法...