[十一]asp.netcore中的taghelper(代码片段)

长不大的大灰狼 长不大的大灰狼     2022-12-19     240

关键词:

一、ASP.NET Core 中的 Taghelper

Taghelper 是服务器端组件。 它们在服务器上处理,以在 Razor 文件中创建和渲染 HTML 元素。 ASP.NET Core 有许多内置的 Tag Helper 用于常见任务,例如生成链接,创建表单,加载数据等。

(1)导入内置 Tag Helpers

要在整个应用程序中的所有视图使用内置 Taghelper,需要在_ViewImports.cshtml 文件导入 Taghelper。要导入 Taghelper,我们使用@addTagHelper指令。

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers;
(2)使用 Taghelper 生成链接

方法 1:手动生成链接

@foreach (var student in Model) 
<a href="/home/details/@student.Id">查看</a>

方法 2:使用 Tag Helpers

<a asp-controller="home" asp-action="details" asp-route-id="@student.Id">查看</a>

生成结果:<a href="/Home/details/5">查看</a>

(3)为什么要使用 Taghelper (标记助手)

现在让我们改变路由模板。 请注意,在 URL 中我们增加了字符串"pragim"。

app.UseMvc(routes =>

    routes.MapRoute("default", "pragim/controller=Home/action=Index/id?");
);

使用 Taghelper 生成的代码是正确的链接(自动补全路径):

<a href="/pragim/home/details/1">查看</a>

未使用 Taghelper,缺少 URL 路径"/pragim"。

<a href="/home/details/1">查看</a>
(4)ASP.NET Core Image 标记助手(TagHelper)

浏览器缓存:
当我们访问网页时,大多数现代浏览器会缓存该网页的图像。当我们再次访问该页面时,浏览器不再从 Web 服务器再次下载相同的图像,而是从缓存中提供图像。在大多数情况下,这不是问题,因为图像不经常改变。但是这对于开发人员来说,相当的不友好。。。

禁用浏览器缓存:

ASP.NET Core 中的 Image Taghelper:
只有在服务器上更改了图片才能下载图片。如果图像未更改,则使用浏览器缓存中的图像。

<img src="~/images/noimage.jpg" asp-append-version="true"/>

Image TagHelper 增强了<img>标签,将图像的内容,生成唯一的散列值并将其附加到图片的 URL。

<img
  class="card-img-top"
  src="/images/noimage.jpg?v=IqNLbsazJ7ijEbbyzWPke-xWxkOFaVcgzpQ4SsQKBqY"
/>

每次服务器上的图像更改时,都会计算并缓存新的哈希值。如果图像未更改,则不会重新计算哈希值。使用此唯一哈希值,浏览器会跟踪服务器上的图像内容是否已更改。

(5)ASP.NET Core 环境(environment) Taghelper

如果应用程序环境是"Development",则此示例加载非缩小的 bootstrap css 文件。

<environment include="Development">
    <link href="~/lib/bootstrap/css/bootstrap.css" rel="stylesheet"/>
</environment>

如果应用程序环境是"Staging"或者 “Production”,则此示例从 CDN(内容传送网络)加载缩小的 bootstrap css 文件。

<environment include="Staging,Production">
    <link rel="stylesheet"
            href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
            integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
            crossorigin="anonymous">
</environment>

如果 CDN 失败怎么办?
如果 CDN 出现故障或由于某种原因,我们的应用程序无法访问 CDN,我们希望我们的应用程序从我们自己的应用程序 Web 服务器加载缩小的 bootstrap 文件(bootstrap.min.css)。请考虑以下示例:

<environment include="Development">
    <link href="~/lib/bootstrap/css/bootstrap.css" rel="stylesheet"/>
</environment>

<environment exclude="Development">
    <link rel="stylesheet"
            integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
            crossorigin="anonymous"
            href="https://sstackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
            asp-fallback-href="~/lib/bootstrap/css/bootstrap.min.css"
            asp-fallback-test-class="sr-only" asp-fallback-test-property="position"
            asp-fallback-test-value="absolute"
            asp-suppress-fallback-integrity="true"/>
</environment>

使用 asp-fallback-href属性指定回退源。这意味着,如果 CDN 关闭,我们的应用程序将回退并从我们自己的应用程序 Web 服务器加载缩小的 bootstrap 文件(bootstrap.min.css)。

以下 3 个属性及其相关值用于检查 CDN 是否已关闭:

asp-fallback-test-class="sr-only"
asp-fallback-test-property="position"
asp-fallback-test-value="absolute"

当然,这里面是会有一些涉及计算哈希并将其与文件的完整性属性哈希值进行比较。 对于大多数应用程序,CDN 失效的时候回退的都是到他们自己的服务器。 通过将asp-suppress-fallback-integrity属性设置为 true,当然您也可以选择关闭从本地服务器下载的文件完整性检查。

3.netcore笔试题(代码片段)

1.什么是ASP.NETCore?2.ASP.NETCore中AOP的支持有哪些?3.ASP.NETCoreFilter的注册方式有哪些?4.ASP.NETCoreFilter如何支持依赖注入?5.ASP.NETCore如何和读取配置文件中的内容?6.ASP.NETCore有哪些好的功能?7.ASP.NETCore跟ASP.NET比较有哪些更好的地方... 查看详情

详解asp.netcore中的cookies(代码片段)

目录详解Asp.NetCore中的cookies搞懂cookiesAsp.Net中cookies的实现从http中获取cookies将cookies写入http中总结及感想详解Asp.NetCore中的cookies搞懂cookies我之前写过一篇文章来介绍cookies,如果你对cookies不是很了解请移步理解cookies这篇文章,这... 查看详情

asp.netcore中的缓存[1]:如何在一个asp.netcore应用中使用缓存

.NETCore针对缓存提供了很好的支持,我们不仅可以选择将数据缓存在应用进程自身的内存中,还可以采用分布式的形式将缓存数据存储在一个“中心数据库”中。对于分布式缓存,.NETCore提供了针对Redis和SQLServer的原生支持... 查看详情

理解asp.netcore

注:本文隶属于《理解ASP.NETCore》系列文章,请查看置顶博客或点击此处查看全文目录之前,我们已经了解了ASP.NETCore中的身份认证,现在,我们来聊一下授权。老规矩,示例程序源码XXTk.Auth.Samples已经提交了,需要的请自取。概... 查看详情

asp.netcore2.0中的httpcontext

ASP.NETCore2.0中的HttpContexthttps://blog.csdn.net/weixin_34174322/article/details/87012345 将Net项目升级Core项目经验:(二)修复迁移后NetStandard项目中的错误https://www.colabug.com/2742683.htmlNETCore中怎么使用HttpContext.Cur 查看详情

从asp.netmvc迁移到asp.netcoremvc

...绍:若要迁移配置和Identity代码,请参阅将配置迁移到ASP.NETCore并迁移身份验证和IdentityASP.NETCore。在VisualStudio中创建ASP.NETMVC项目的示例以进行迁移:使用要迁移到的新ASP.NETCore项目创建新的解决方案:在ASP.NETCore3.0及更高版本的... 查看详情

[十二]asp.netcore中的模型绑定(代码片段)

模型绑定1、模型绑定(1)HTTP请求数据2、ASP.NETCore中的模型验证(1)ModelState.IsValid属性验证(2)在视图中显示模型验证错误(3)自定义模型验证错误消息1、模型绑定模型绑定是将HTTP请求中的数据... 查看详情

[十二]asp.netcore中的模型绑定(代码片段)

模型绑定1、模型绑定(1)HTTP请求数据2、ASP.NETCore中的模型验证(1)ModelState.IsValid属性验证(2)在视图中显示模型验证错误(3)自定义模型验证错误消息1、模型绑定模型绑定是将HTTP请求中的数据... 查看详情

asp.net core 3中的CorsAuthorizationFilterFactory

】asp.netcore3中的CorsAuthorizationFilterFactory【英文标题】:CorsAuthorizationFilterFactoryinasp.netcore3【发布时间】:2020-04-0700:06:31【问题描述】:我正在尝试将项目从asp.netCore2.2.6迁移到asp.netCore3.0在我的创业中,我有services.AddMvc(options=>opt... 查看详情

asp.netcore中的重定向(代码片段)

前言在《如何使用ASP.NETCoreWebAPI实现短链接服务》中,我们使用了Redirect方法返回跳转状态码:[HttpGet("shortUrl")]public IActionResult GetUrl(string shortUrl)    var hashids = new Hashids("公众号My IO", minHashL 查看详情

[五]asp.netcore中的静态文件(代码片段)

1、添加静态文件中间件publicvoidConfigure(IApplicationBuilderapp,IHostingEnvironmentenv)if(env.IsDevelopment())app.UseDeveloperExceptionPage();//添加静态文件中间件app.UseStaticFiles();app.Run(async(context)=>a 查看详情

text使用imagesharp调整asp.netcore中的图像大小(代码片段)

查看详情

asp.netcore在azurekubernetesservice中的部署和管理(代码片段)

目录ASP.NETCore在AzureKubernetesService中的部署和管理目标准备工作注册Azure账户AKS文档进入Azure门户(控制台)安装AzureCli安装Docker进入正题资源组创建资源组删除资源组容器注册表AzureContainerRegister(ACR)创建ACR登录ACR服务主体serviceprinc... 查看详情

ASP.NET Core 中的 URL 编码和解码

】ASP.NETCore中的URL编码和解码【英文标题】:URLEncodeandDecodeinASP.NETCore【发布时间】:2017-07-0508:30:12【问题描述】:HttpContext.Current.Server.UrlEncode这仅在.NETFramework中有效。如何在ASP.NETCore中编码或解码URI参数?【问题讨论】:ASP.NETCo... 查看详情

Asp.net Core 中的 UserHostAddress

】Asp.netCore中的UserHostAddress【英文标题】:UserHostAddressinAsp.netCore【发布时间】:2014-11-2517:22:24【问题描述】:旧的HttpContext.Request.UserHostAddress在Asp.NetCore中的等价物是什么?我尝试了this.ActionContext.HttpContext,但找不到UserHostAddress... 查看详情

ASP.NET Core 2.0 中的多个身份

】ASP.NETCore2.0中的多个身份【英文标题】:MultipleIdentitiesinASP.NETCore2.0【发布时间】:2018-05-0602:34:40【问题描述】:我正在将ASP.NETCore1.0应用程序迁移到ASP.NETCore2.0。在我的启动中,我正在配置两个身份:services.AddIdentity<IdentityUse... 查看详情

asp.netcore中的规约模式(specificationpattern)——增强泛型仓储模式

...ification-pattern-in-aspnet-core/在本文中,我们将讨论在ASP.NETCore应用程序中实现规约模式以及它如何增强现有的泛型仓储模式。我们将从头开始构建具有泛型仓储模式、EntityFrameworkCore的ASP.NETCoreWebAPI, 查看详情

ASP.NET Core 中的 Angular 应用 6:多个模块匹配

】ASP.NETCore中的Angular应用6:多个模块匹配【英文标题】:Angularapp6inASP.NETCore:Morethanonemodulematches【发布时间】:2019-06-1213:57:49【问题描述】:Angularv6.1.10|ASP.NETCorev2.2.102我正在从ASP.NETCore模板构建一个Angular应用程序。我想创建一个... 查看详情