diff --git a/VisibilityTagHelperDemo/src/VisibilityTagHelperDemo/TagHelpers/VisibilityTagHelper.cs b/VisibilityTagHelperDemo/src/VisibilityTagHelperDemo/TagHelpers/VisibilityTagHelper.cs new file mode 100644 index 0000000..4d56ac0 --- /dev/null +++ b/VisibilityTagHelperDemo/src/VisibilityTagHelperDemo/TagHelpers/VisibilityTagHelper.cs @@ -0,0 +1,20 @@ +using System.Threading.Tasks; +using Microsoft.AspNetCore.Razor.TagHelpers; + +namespace VisibilityTagHelperDemo.TagHelpers +{ + [HtmlTargetElement("div")] + public class VisibilityTagHelper : TagHelper + { + // default to true otherwise all existing target elements will not be shown, because bool's default to false + public bool IsVisible { get; set; } = true; + + public override Task ProcessAsync(TagHelperContext context, TagHelperOutput output) + { + if (!IsVisible) + output.SuppressOutput(); + + return base.ProcessAsync(context, output); + } + } +} diff --git a/VisibilityTagHelperDemo/src/VisibilityTagHelperDemo/Views/Home/Index.cshtml b/VisibilityTagHelperDemo/src/VisibilityTagHelperDemo/Views/Home/Index.cshtml index 3cd243d..6d37b43 100644 --- a/VisibilityTagHelperDemo/src/VisibilityTagHelperDemo/Views/Home/Index.cshtml +++ b/VisibilityTagHelperDemo/src/VisibilityTagHelperDemo/Views/Home/Index.cshtml @@ -2,6 +2,18 @@ ViewData["Title"] = "Home Page"; } +
+ This should always be visible. +
+ +
+ This should never be visible. +
+ +
+ This should only be visible if you're logged in. +
+