【问题标题】:How to enter innerHtml to an input (generated with TagHelper)?如何将 innerHtml 输入到输入中(使用 TagHelper 生成)?
【发布时间】:2016-02-25 07:18:08
【问题描述】:

我使用 MVC 6 Tag Helper 创建了自己的锚标记。 如果我从属性中给出 innerHtml 但我想直接从 HTML 中给出 innerHtml,它工作正常。 这是我的自定义锚点的 TagHelper 代码

   public string Text { get; set; }  

   public override void Process(TagHelperContext context, TagHelperOutput output)
   {
       var builder = new TagBuilder("a");

       output.Attributes.Add("data-controller", Controller);
       output.Attributes.Add("data-action", Action);

       if (!string.IsNullOrEmpty(Text))
       {
           builder.InnerHtml.Append(Text); // INNER HTML IS HERE!!! 
       }
       builder.AddCssClass("btn btn-link");
       output.Content.SetContent(builder);
       base.Process(context, output);
   }

而且现在的用法是这样的(目前的情况——有效)

<anchor-box name="ALink" controller="A" action="D" text="© 2016 Murat"></anchor-box>

是否可以像下面这样手动提供内部 html 文本? (需要的情况 - 目前不起作用)

 <anchor-box name="ALink" controller="A" action="D">© 2016 Murat</anchor-box>

【问题讨论】:

  • 试了有结果吗?
  • 当你说“手动提供内部 html 文本”时,你的意思是你想用类似 javascript 的方式来做吗?
  • 当我尝试提供内部文本时,它不会以某种方式显示在输出中。我感觉 TagHelper 在生成标签后删除了 innerHtml。

标签: c# anchor asp.net-core-mvc tag-helpers


【解决方案1】:

为了实现这一点,我们必须使用 Asyn 版本的 Process 方法

    public override Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
    {
        var content = output.GetChildContentAsync().Result.GetContent();

        var builder = new TagBuilder("a");
        builder.Attributes.Add("role", "button");
        builder.Attributes.Add("id", Name);
        builder.Attributes.Add("name", Name);
        output.Attributes.Add("data-controller", Controller);
        output.Attributes.Add("data-action", Action);

        builder.InnerHtml.Append(content);

        output.Content.SetContent(builder);

        return base.ProcessAsync(context, output);
    }

使用 ProcessAsync 方法,现在我可以在开闭标签之间直接给出内部 html

<anchor-box name="ALink" controller="A" action="D">© 2016 Murat</anchor-box>

【讨论】:

    猜你喜欢
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多