c# - 如何将 innerHtml 输入到输入(使用 TagHelper 生成)?

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

我使用 MVC 6 Tag Helper 创建了自己的定位标签。 如果我从属性中提供 innerHtml,但我想直接从 HTML 中提供 innerHtml,则效果很好。 这是自定义 anchor 的 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>

最佳答案

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

    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>

关于c# - 如何将 innerHtml 输入到输入(使用 TagHelper 生成)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35620756/

相关文章:

asp.net-core - 如何自动增加 MVC 6 版本号?

c# - Excel IF 语句导致错误 : Exception from HRESULT: 0x800A03EC

c# - ASP.NET MVC 如何在我的 View 文件夹中注册一个资源文件,用作@using

javascript - 寻找最近的 anchor href 滚动偏移量

javascript - jQuery - 尚未被 anchor 包围的环绕图像

c# - 无法在 DbContext EF Core 上禁用延迟加载和代理创建

c# - 界面模拟上的 Moq CallBase

c# - 避免 C# 中的递归事件

javascript - HTML anchor 链接 - href 和 onclick 两者?

asp.net-core - 如何读取 dotnet core(以前的 asp.net mvc6)中项目的版本