Tag Helper allows you to add or modify HTML elements from server-side code. In Razor markup, the Tag Helper looks like standard HTML elements. It provides more productive
syntax than manually writing the C# Razor markup.
Tag Helpers enable server-side code to participate in creating and rendering HTML elements in Razor files.
(Microsoft Docs - Tag Helpers in ASP.NET Core)
To create a custom Tag Helper, you need to inherit from built-in TagHelper
class. For example we have this Tag Helper,
public class StringTagHelper : TagHelper
{
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "span";
output.TagMode = TagMode.StartTagAndEndTag;
output.Attributes.Add("data-entity", "customer");
base.Process(context, output);
}
}
This Tag Helper will output the span
element and add a custom attribute data-entity
with value customer
.
In the Razor markup, we can use this Tag Helper as:
<string field="CustomerID"></string>
Ofcourse we can add any extra/custom attributes to html tags, these will not interrupt with Tag Helpers.
The browser will render the final output as:
<span field="CustomerID" data-entity="customer"></span>
To use the Tag Helpers in the views, you need to set its scope, usually we define the scope in Views/_ViewImports.cshtml
file.
Tag Helpers scope is controlled by a combination of @addTagHelper
, @removeTagHelper
, and the "!"
opt-out character.
To make the required TagHelper avialable for one or more views we use @addTagHelper
.
If you create a new ASP.NET Core web app named MyApplicationTagHelpers
, the following Views/_ViewImports.cshtml
file will be added to your project:
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, MyApplicationTagHelpers
Some points for above code:
-
The code above uses the wildcard syntax (
"*"
) to specify that all Tag Helpers in the specified assembly (Microsoft.AspNetCore.Mvc.TagHelpers
) will be available to every view file in the Views directory or subdirectory.
-
The first parameter after @addTagHelper specifies the Tag Helpers to load (
"*"
is used to load all Tag Helpers)
-
The second parameter
"Microsoft.AspNetCore.Mvc.TagHelpers"
specifies the source assembly from which we want to load the Tag Helpers. It can be current project's assemly or any reference to external library.
References:
Related Post(s):