I've been looking at examples on taghelpers on google but couldn't find any example I'm looking for.
I have the following code:
<div class="form-group">
<label asp-for="PersonName" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="PersonName" class="form-control" />
<span asp-validation-for="PersonName" class="text-danger"></span>
</div>
</div>
What i'd look to do is replace it with something like
<bootstraprow asp-for="PersonName"></bootstraprow>
However I'm not sure to write a taghelper that contains other taghelpers
Edit: It is not the same as storing variables in custom taghelpers but I want to call other custom taghelpers or existing taghelpers.
If we check what you have, the only property that you are using is PersonName. As for the markup itself, everything else is good old HTML.
So you don't need to replace anything. What you need is to have constructor that has a dependency on IHtmlGenerator
. This will get automatically injected and you will be able to generate the different tags based on your model.
Relevant IHtmlGenerator
Signature:
public interface IHtmlGenerator
{
...
TagBuilder GenerateValidationMessage(
ViewContext viewContext,
string expression,
string message,
string tag,
object htmlAttributes);
TagBuilder GenerateLabel(
ViewContext viewContext,
ModelExplorer modelExplorer,
string expression,
string labelText,
object htmlAttributes);
TagBuilder GenerateTextBox(
ViewContext viewContext,
ModelExplorer modelExplorer,
string expression,
object value,
string format,
object htmlAttributes);
...
}
And that's it!
Here's a bit of code that would capture the basic tag:
[HtmlTargetElement("bootstraprow")]
public BootstrapRowTagHelper: TagHelper
{
protected IHtmlGenerator Generator { get; set; }
public InputTagHelper(IHtmlGenerator generator)
{
Generator = generator;
}
[HtmlAttributeName("asp-for")]
public ModelExpression For { get; set; }
[HtmlAttributeNotBound]
[ViewContext]
public ViewContext ViewContext { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
//todo: write your html generating code here.
}
}
Here's a repo with sample code that generates Bootstrap HTML from TagHelpers:
https://github.com/dpaquette/TagHelperSamples/blob/master/TagHelperSamples/src/TagHelperSamples.Bootstrap/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With