2

I have Parent and Child TagHelper.. I have set attribute "parentTag" for Child Tag and yet it displays outside that parent Tag. How to restrict it from appearing outside parent Tag

 [HtmlTargetElement("TestParent")]
public class Parent: TagHelper{
}

[HtmlTargetElement("TestChild",ParentTag = "TestParent")]
public class Child : TagHelper
{
}

What it need is that "TestChild" should not appear outside "TestParent"

For example:

<TestChild value=2></TestChild> 

Above code must throw error or should not be shown in intellisense as it not enclosed by parent Tag "Testparent"

4

1 回答 1

0

我尝试使用父标签助手重新创建您的场景

[HtmlTargetElement("TestParent")]
public class ParentTagHelper : TagHelper
{

}

和一个子标签助手:

[HtmlTargetElement("TestChild", ParentTag = "TestParent")]
public class ChildTagHelper : TagHelper
{
    public int Value { get; set; }

    public override void Process(TagHelperContext context, TagHelperOutput output)
    {
        output.Content.SetContent(Value.ToString());
    }
}

我将这两个添加到 中_ViewImports.cshtml,然后构建项目。然后我在视图中调用标签助手:

<TestParent>
    <TestChild value="101"></TestChild>
</TestParent>

<TestChild value="202"></TestChild>

我在第一个标签上看到了预期的 IntelliSense,但在另一个标签上没有看到:

在此处输入图像描述

最后,我在 ASP.NET Core 2.2 上执行了 Web 应用程序。结果页面的 HTML 代码为:

<TestParent>
    <TestChild>101</TestChild>
</TestParent>

<TestChild value="202"></TestChild>

它看起来非常好。正如预期的那样。第一个标签已处理,第二个未处理。

结论

除了原始问题中描述的问题外,您似乎还有其他问题。很可能问题不在于唯一的标签助手功能及其对父标签的限制。

于 2019-06-28T17:12:16.750 回答