首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.NET核心标签taghelper。如何追加自定义文本

ASP.NET核心标签taghelper。如何追加自定义文本
EN

Stack Overflow用户
提问于 2017-07-11 01:18:19
回答 3查看 3.3K关注 0票数 1

当我们写的时候

代码语言:javascript
运行
复制
<label asp-for="Email"></label>

它生成以下HTML:

代码语言:javascript
运行
复制
<label for="Email">Email Address</label>

它工作得很好。问题是是否有可能扩展tag helper以支持添加自定义文本?例如,如果我写

代码语言:javascript
运行
复制
<label asp-for="Email" asp-postfix=":"></label>

它生成以下HTML:

代码语言:javascript
运行
复制
<label for="Email">Email Address:</label>

请注意,冒号现在已添加到标签文本中。和冒号可以替换为任何其他文本。

EN

回答 3

Stack Overflow用户

发布于 2017-07-11 13:54:21

如果你计划扩展当前的aspnet tag helper,你不能,你需要创建你自己的tag helper。aspnet和您的aspnet都将运行。

代码语言:javascript
运行
复制
[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
        }
    }
}

要使用它:

代码语言:javascript
运行
复制
<label asp-for="Email" postfix-text=":"></label>
票数 6
EN

Stack Overflow用户

发布于 2019-11-28 14:04:52

在标签助手中,如果你在源代码中有静态内容,并且想要追加文本,那么请参考下面的链接。https://github.com/aspnet/Razor/issues/341。为了参考,在这里添加了相同的示例。

源文件

代码语言:javascript
运行
复制
<my-tag-helper>
    Content in source
</my-tag-helper>

标记帮助程序文件。

代码语言:javascript
运行
复制
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");
}

输出。

代码语言:javascript
运行
复制
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
票数 0
EN

Stack Overflow用户

发布于 2019-05-29 06:51:20

这样做效果很好:

代码语言:javascript
运行
复制
<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>: &nbsp;</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>: &nbsp;</span>
    <input class="form-control col-6" asp-for="ServiceToBeAdded.Price" type="text" />
  </div>

</form>
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45018094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档