ASP.NET Core MVC自定义Tag Helpers用法介绍

介绍

在之前的内容中,我们谈到了Tag Helpers,我们还谈到了 caching Tag Helpers和form Tag Helpers。

通过创建自定义Tag Helpers,我们可以扩展现有元素或创建我们自己的元素。

Tag Helper是实现ITagHelper接口类的统称。MVC为我们提供了该接口的抽象类TagHelper,它位于 Microsoft.AspNetCore.Razor.Runtime 程序集中。因此,我们可以直接从TagHelper类继承,我们主要需要实现以下方法:

    public virtual void Process(TagHelperContext context, TagHelperOutput output);

    public virtual Task ProcessAsync(TagHelperContext context, TagHelperOutput output);

Process方法是具体的逻辑实现。它需要传递 Tag Helper上下文的实例和Tag Helper输出(我们可以用它来读取和更改Tag Helper范围内的实际内容)。

简单示例

我们创建自己的Tag Helper。假设我们将使用<simple> </simple>Tag Helper,其中的内容将是粗体。

我们将要创建一个名为CustomTagHelpers的新项目。因此,程序集名称也将是 CustomTagHelpers。

首先,我们创建一个新的Tag Helper。使用Visual Studio,我们可以这样操作添加 - > 新建项 - > Web - > Razor 标记帮助器

这是默认生成的代码:

    public class SimpleTagHelper : TagHelper
    {
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
        }
    }

我们需要做的是将输出标签名称设置为 strong:

    public class SimpleTagHelper : TagHelper
    {
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            output.TagName = "strong";
        }
    }

为了能够在我们的视图中使用新创建的Tag Helper,我们必须在 ViewImports.cshtml 文件中添加下面这一行:

    @addTagHelper *, CustomTagHelpers

_  @addTagHelper _ 指令后可以注意到两个字符串:

  • 它的第二部分 - CustomTagHelpers 表示从哪个程序集名称里加载Tag Helper;
  • 第一个字符串在_  @addTagHelper _指令之后表示要加载的TagHelper的名称,通配符(*)表示我们将使用给定程序集中所有Tag Helper。

如果我们现在转到其中一个页面并写入如下代码:

    <simple>CodingBlast</simple>

我们将在Visual Studio中看到这个**simple **的标签已经变成紫色,并且被识别为Tag Helper。如果我们运行应用程序,我们将以粗体显示此文本。

如果我们查看HTML输出,我们可以看到simple 标签被strong所替代:

    <strong>CodingBlast</strong>

改变属性

我们来构建另外一个Tag Helper,作为img标签的另一种方式。我们将添加一个名称是CuteTagHelper的新的Tag Helper。

using Microsoft.AspNetCore.Razor.TagHelpers;
namespace CustomTagHelpers.TagHelpers
{
    [HtmlTargetElement("cute")]
    public class CuteTagHelper : TagHelper
    {
        public string ImageLink { get; set; }
        public string AlternativeText { get; set; }
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            output.TagName = "img";
            output.TagMode = TagMode.StartTagOnly;
            output.Attributes.SetAttribute("src", ImageLink);
            output.Attributes.SetAttribute("alt", AlternativeText);
        }
    }

如果我现在转到_.cshtml_文件并开始输入:

你可以看到 **cute ** 的是紫色的,说明Visual Studio认为它是一个Tag Helper。此外,它为我们在CuteTagHelper类中指定的两个属性提供了智能提示。

我们在TagHelper类中指定的任何公共属性将在 .cshtml 文件中显示为一个属性。

总结

  • 使用Tag Helper,我们可以使用属性扩展现有元素或创建新元素
  • 一旦我们创建了一个Tag Helper,我们通常会有一个可重用的属性或元素
  • MVC附带的TagHelper类提供了编写Tag Helpers的方法和属性
  • Tag Helpers使用命名约定(就像MVC中的控制器一样),所以如果使用类名称CoolTagHelper,您将能够在代码中使用<cool>标签

到此这篇关于ASP.NET Core MVC自定义Tag Helpers的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • ASP.NET Core MVC中使用Tag Helper组件

    Tag Helper 组件 - 简介 之前我们已经在几个文章中谈到了Tag Helpers,这一次我们会讨论其它有关的事情. 在 ASP.NET Core 2 还为我们带来了一个新功能 - Tag Helper 组件. Tag Helper 组件负责生成或修改特定的HTML,它们与 Tag Helper 一起工作. Tag Helper 将会运行您的 Tag Helper 组件. Tag Helper 组件是动态地向HTML中添加内容最完美的选择. 要使您的Tag Helper组件运行,您需要设

  • ASP.NET Core MVC缓存Tag Helpers到内存

    简介 缓存可以大大提高应用程序加载时间和响应速度.我们可以使用缓存Tag Helpers缓存不会频繁更改的HTML内容. 在上一篇文章中,我们谈到了Tag Helpers,演示Tag Helpers能做什么.如何使用它们以及一些最常用的Tag Helpers. 今天,我们将看看如何使用缓存Tag Helpers和它们的益处. Cache Tag Helper 首先说一下 <cache> Tag Helper.与其它Tag Helper不同,其它Tag Helper被当作属性使用,缓存Tag H

  • ASP.NET Core MVC中Tag Helpers用法介绍

    简介 Tag Helpers 提供了在视图中更改和增强现有HTML元素的功能.将它们添加到视图中,会经过Razor模板引擎处理并创建一个HTML,之后再返回给浏览器.有一些Tag Helpers,其实作为元素或实际的标签(如environment,cache等). 它们使用HTML方式编写,同时利用了Razor的强大功能.C#的简洁和HTML的友好性.由于使用Tag Helpers感觉如此自然,看起来像标准的HTML,前端开发人员也可以轻松地适应,不需要学习C#语法:此外,它们可以在现有元素范围

  • ASP.NET Core MVC中Form Tag Helpers用法介绍

    简介 我们已经介绍过Tag Helpers以及一些最常用的Tag Helpers,也谈到了缓存Tag Helpers.在这篇文章中,我们将讨论表单Tag Helpers. HTML或Web表单通过使用各种HTML元素用于收集来自用户的输入,如输入框.复选框.单选按钮.下拉列表等.使用 <form> 元素时,我们通常使用POST请求.虽然也可以使用GET请求,不过GET请求建议提交于少量.非敏感的数据来获取数据. ASP.NET Core MVC提供了一些Form Tag Helpers,让我们

  • ASP.NET Core MVC自定义Tag Helpers用法介绍

    介绍 在之前的内容中,我们谈到了Tag Helpers,我们还谈到了 caching Tag Helpers和form Tag Helpers. 通过创建自定义Tag Helpers,我们可以扩展现有元素或创建我们自己的元素. Tag Helper是实现ITagHelper接口类的统称.MVC为我们提供了该接口的抽象类TagHelper,它位于 Microsoft.AspNetCore.Razor.Runtime 程序集中.因此,我们可以直接从TagHelper类继承,我们主要需要实现以下方法:

  • ASP.NET Core MVC路由(Routing)的用法

    目录 1.设置路由中间件 2.常规路由 3.多路由 1.回退 2.行动歧义 3.路由名称 4.路由特性 5.组合路由 6.特性路由的顺序 7.路由模板中的标记替换( [controller] , [action] , [area]) 8.使用IRouteTemplateProvider自定义路由特性 9.使用应用程序模型来自定义特性路由 10.URL生成 11.通过操作名生成URL 12.通过路由名生成URL 13.在操作结果中生成URL 14.专用常规路由的特殊情况 15.区域 16.IAct

  • ASP.NET Core MVC中的局部视图用法

    目录 1.什么是局部视图 2.什么时候使用局部视图 3.引用局部视图 4.发现局部视图 5.局部视图访问数据 6.简单实战 1.什么是局部视图 局部视图是在其他视图中呈现的视图.通过执行局部视图生成的HTML输出呈现在调用视图中.与视图一样,局部视图使用 .cshtml 文件扩展名.当希望在不同视图之间共享网页的可重用部分时,就可以使用局部视图. 2.什么时候使用局部视图 局部视图是将大视图分成小组件的有效方法.通用的布局元素应在 _Layout.cshtml 中指定,非布局可重用内容可以封装成

  • ASP.NET Core MVC 过滤器的使用方法介绍

    过滤器的作用是在 Action 方法执行前或执行后做一些加工处理.使用过滤器可以避免Action方法的重复代码,例如,您可以使用异常过滤器合并异常处理的代码. 过滤器如何工作? 过滤器在 MVC Action 调用管道中运行,有时称为过滤器管道.MVC选择要执行的Action方法后,才会执行过滤器管道: 实现 过滤器同时支持同步和异步两种不同的接口定义.您可以根据执行的任务类型,选择同步或异步实现. 同步过滤器定义OnStageExecuting和OnStageExecuted方法,会在管道特定

  • ASP.NET Core MVC中过滤器工作原理介绍

    过滤器的作用是在 Action 方法执行前或执行后做一些加工处理.使用过滤器可以避免Action方法的重复代码,例如,您可以使用异常过滤器合并异常处理的代码. 过滤器如何工作? 过滤器在 MVC Action 调用管道中运行,有时称为过滤器管道.MVC选择要执行的Action方法后,才会执行过滤器管道: 实现 过滤器同时支持同步和异步两种不同的接口定义.您可以根据执行的任务类型,选择同步或异步实现. 同步过滤器定义OnStageExecuting和OnStageExecuted方法,会在管道特定

  • ASP.NET Core扩展库ServiceStack.Redis用法介绍

    给大家安利一款 ServiceStack.Redis 的 ASP.NET Core 扩展库,它是基于 ServiceStack.Redis.Core 开发的. 简单易用,开源免费,使用ASP.NET Core自身提供的DI容器来实现针对服务的注册和消费.直接在程序启动时注册到服务中即可完成全部配置,对于小白用户也可快速上手Redis缓存和Redis分布式缓存. Install Package https://www.nuget.org/packages/ServiceStack.Redis.Ex

  • ASP.NET Core MVC中的控制器(Controller)介绍

    操作(action)和操作结果(action result)是 ASP.NET MVC 构建应用程序的一个基础部分.在 ASP.NET MVC 中,控制器用于定义和聚合一组操作.操作是控制器中处理传入请求的一种方法.控制器提供了一种逻辑方式,将相似的操作组织起来,允许一些通用的规则(例如路由,缓存,授权)使用共同的应用.传入的请求通过 路由 映射到操作.ASP.NET Core MVC 中,控制器可以是任何以 “Controller” 结尾或继承自以 “Controller” 结尾的可实例化类.

随机推荐