当我们写的时候
<label asp-for="Email"></label>
它生成以下HTML:
<label for="Email">Email Address</label>
它工作得很好。问题是是否有可能扩展tag helper以支持添加自定义文本?例如,如果我写
<label asp-for="Email" asp-postfix=":"></label>
它生成以下HTML:
<label for="Email">Email Address:</label>
请注意,冒号现在已添加到标签文本中。和冒号可以替换为任何其他文本。
发布于 2017-07-11 13:54:21
如果你计划扩展当前的aspnet tag helper,你不能,你需要创建你自己的tag helper。aspnet和您的aspnet都将运行。
[HtmlTargetElement("label", Attributes = _textAttributeName)]
public class PostfixTagHelper : TagHelper
{
private const string _textAttributeName = "postfix-text";
[HtmlAttributeName(_textAttributeName)]
public string Text { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
base.Process(context, output);
output.Content.Append(Text);
}
public override int Order
{
get
{
return 100; // Needs to run after aspnet
}
}
}
要使用它:
<label asp-for="Email" postfix-text=":"></label>
发布于 2019-11-28 14:04:52
在标签助手中,如果你在源代码中有静态内容,并且想要追加文本,那么请参考下面的链接。https://github.com/aspnet/Razor/issues/341。为了参考,在这里添加了相同的示例。
源文件
<my-tag-helper>
Content in source
</my-tag-helper>
标记帮助程序文件。
public void Process(TagHelperContext context, TagHelperOutput output)
{
var nl = Environment.NewLine;
var br = "<br />" + nl;
output.PreElement.Append("This will appear before source element" + br);
output.PreContent.Append(nl + "This will appear before source content" + br);
output.PostContent.Append(br + "This will appear after source content" + nl);
output.PostElement.Append(br + "This will appear after source element");
}
输出。
This will appear before source element<br />
<my-tag-helper>
This will appear before source content<br />
Content in source<br />
This will appear after source content
</my-tag-helper><br />
This will appear after source element
发布于 2019-05-29 06:51:20
这样做效果很好:
<form method="post" class="container mt-3 backgroundwhite w-100">
<div class="form-group row">
<label class="col-4 text-right pr-1" style="" asp-for="ServiceToBeAdded.Name"></label><span>: </span>
<input class="form-control col-6" asp-for="ServiceToBeAdded.Name" type="text" />
</div>
<div class="form-group row">
<label class="col-4 text-right pr-1" asp-for="ServiceToBeAdded.Price"></label><span>: </span>
<input class="form-control col-6" asp-for="ServiceToBeAdded.Price" type="text" />
</div>
</form>
https://stackoverflow.com/questions/45018094
复制相似问题