Tag Helpers are a cool new feature in ASP.NET Core that let you define custom HTML elements that are processed server-side.
I thought that it would be neat to be able to emit Google AdSense ad code by writing a single HTML element:
<google-adsense ad-client="ca-pub-XXXXXXXXXXXXXXXX" ad-slot="XXXXXXXXXX" width="300" height="250" />
I was able to accomplish that with the following tag helper:
public class GoogleAdsenseTagHelper : TagHelper
{
public string AdClient { get; set; }
public string AdSlot { get; set; }
public int Width { get; set; }
public int Height { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.SuppressOutput();
if (!String.IsNullOrEmpty(AdClient) && !String.IsNullOrEmpty(AdSlot) && Width > 0 && Height > 0)
{
var sb = new StringBuilder();
sb.AppendLine("<script async src=\"//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js\"></script>");
sb.AppendLine("<ins class=\"adsbygoogle\"");
sb.AppendLine($" style=\"display:inline-block;width:{Width}px;height:{Height}px\"");
sb.AppendLine($" data-ad-client=\"{AdClient}\"");
sb.AppendLine($" data-ad-slot=\"{AdSlot}\"></ins>");
sb.AppendLine("<script>");
sb.AppendLine("(adsbygoogle = window.adsbygoogle || []).push({});");
sb.AppendLine("</script>");
output.Content.SetHtmlContent(sb.ToString());
}
}
}
I hope this blog post helps you out, or gives you inspiration for your own ASP.NET Core tag helpers.