BaseTagHelpers 0.1.1

dotnet add package BaseTagHelpers --version 0.1.1                
NuGet\Install-Package BaseTagHelpers -Version 0.1.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="BaseTagHelpers" Version="0.1.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add BaseTagHelpers --version 0.1.1                
#r "nuget: BaseTagHelpers, 0.1.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install BaseTagHelpers as a Cake Addin
#addin nuget:?package=BaseTagHelpers&version=0.1.1

// Install BaseTagHelpers as a Cake Tool
#tool nuget:?package=BaseTagHelpers&version=0.1.1                

BaseTagHelpers

Logo

NuGet NuGet Discord

BaseTagHelpers is a collection of ASP.NET Core Tag Helper base classes to create Tag Helpers from.

Installation

You can install the package via NuGet:

dotnet add package BaseTagHelpers

Usage

RazorTagHelperBase without Child Content

The RazorTagHelperBase class is a base class for creating Tag Helpers that render Razor content.

public record MyTagHelperModel(string FirstName, string LastName);

MyRazorTagHelper : RazorTagHelperBase
{
  [HtmlAttributeName("model")] public MyTagHelperModel? Model { get; set; }
    
  public MyRazorTagHelper(
    IHtmlHelper htmlHelper
  ) : base(htmlHelper)
  {
  }
    
  public override void Process(TagHelperContext context, TagHelperOutput output)
  {
    SetPartialName(
      "MyRazorTagHelper.cshtml",
      Model
    );
    await base.ProcessAsync(context, output);
  }
}
@model MyTagHelperModel
<div>
  <h1>Hello @Model.FirstName @Model.LastName</h1>
</div>

RazorTagHelperBase with Child Content

public class MyTagHelperModel : IHasChildContent
{
  public string FirstName { get; set; }
  public string LastName { get; set; }
  public string? ChildContent { get; set; }
}

MyRazorTagHelper : RazorTagHelperBase
{
  [HtmlAttributeName("model")] public MyTagHelperModel? Model { get; set; }
    
  public MyRazorTagHelper(
    IHtmlHelper htmlHelper
  ) : base(htmlHelper)
  {
  }
    
  public override void Process(TagHelperContext context, TagHelperOutput output)
  {
    SetPartialName(
      "MyRazorTagHelper.cshtml",
      Model,
      true // Set to true to allow child content
    );
    await base.ProcessAsync(context, output);
  }
}
@model MyTagHelperModel
<div>
  <h1>Hello @Model.FirstName @Model.LastName</h1>
</div>
<div>
  @Html.Raw(@Model.ChildContent)
</div>

ChildContentRazorTagHelperBase

The ChildContentRazorTagHelperBase class is a base class for creating Tag Helpers that render child content without having a model.

MyChildContentTagHelper : ChildContentRazorTagHelperBase
{
  public MyChildContentTagHelper(
    IHtmlHelper htmlHelper
  ) : base(htmlHelper)
  {
  }
    
  public override void Process(TagHelperContext context, TagHelperOutput output)
  {
    SetPartialName(
      "MyChildContentTagHelper.cshtml"
    );
    await base.ProcessAsync(context, output);
  }
}
@model string

<div>
  @Html.Raw(@Model)
</div>

Want to contribute?

This project is just getting off the ground and could use some help with cleaning things up and refactoring.

If you want to contribute - we'd love it! Just open an issue to work against so you get full credit for your fork. You can open the issue first so we can discuss and you can work your fork as we go along.

If you see a bug, please be so kind as to show how it's failing, and we'll do our best to get it fixed quickly.

Before sending a PR, please create an issue to introduce your idea and have a reference for your PR.

We're using conventional commits, so please use it for your commits as well.

Discussions

If you want to discuss an BaseTagHelpers issue or PR in more detail, feel free to start a discussion.

You can also join our Discord server to discuss the project.

License

The MIT License (MIT). Please see License File for more information.

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.1.1 150 2/26/2024
0.1.0 129 2/26/2024
0.0.0-alpha.0 63 2/26/2024