【发布时间】:2019-07-05 23:00:16
【问题描述】:
我正在尝试在 .Net Core 2 中进行此问题。
Can I use a Tag Helper in a custom Tag Helper that returns html?
" 我想在标签助手中使用标签助手。我环顾四周,找不到其他人尝试这样做,是我使用了糟糕的约定还是缺少文档?
例如。标签助手 A 输出包含另一个标签助手的 HTML。”
如何解决下面的编译错误?
[HtmlTargetElement("tag-name")]
public class RazorTagHelper : TagHelper
{
public override void Process(TagHelperContext context, TagHelperOutput output)
{
StringBuilder sb = new StringBuilder();
sb.Append("<a asp-action=\"Home\" ");
output.Content.SetHtmlContent(sb.ToString());
}
}
有没有办法让我从 C# 处理标签助手?或者使用标签助手重新处理输出 HTML? "
尝试了 Taylor Mullen 的这个标记解决方案:
var anchorTagHelper = new AnchorTagHelper
{
Action = "Home",
};
var anchorOutput = new TagHelperOutput("a", new TagHelperAttributeList(), (useCachedResult, encoder) => new HtmlString());
var anchorContext = new TagHelperContext(
new TagHelperAttributeList(new[] { new TagHelperAttribute("asp-action", new HtmlString("Home")) }),
new Dictionary<object, object>(),
Guid.NewGuid());
await anchorTagHelper.ProcessAsync(anchorContext, anchorOutput);
output.Content.SetHtmlContent(anchorOutput);
在下方接收错误
There is no argument given that corresponds to the required formal parameter 'value' of 'HtmlString.HtmlString(string)'
【问题讨论】:
-
link。几天前我回答了一个类似的问题。看看,让我知道它是否适合你,如果没有,我会帮助你更多。
-
你能为我的问题写一个更具体的答案吗?如果可行,我可以发积分,谢谢,现在看你的回答
-
我这么说的唯一原因是因为我现在在火车上,必须回家。但是,如果在此之前没有人回答,我将非常乐意提供帮助。
-
对于收到的错误,我认为这是因为
HtmlString类没有无参数构造函数,而您正在使用无参数构造函数构造对象(在声明 @ 987654327@) -
@Ammar,TagHelperOutput() 构造函数采用委托而不是 HtmlString() 实例。
标签: c# asp.net-core .net-core asp.net-core-mvc tagbuilder