如何将 innerHtml 输入到输入(使用 TagHelper 生成)?
How to enter innerHtml to an input (generated with TagHelper)?
我使用 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>
为了实现这一点,我们必须使用 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>
我使用 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>
为了实现这一点,我们必须使用 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>