发布:2023/12/7 15:35:38作者:大数据 来源:大数据 浏览次数:375
1、标签中常用的方法
获取自定义TagHelper中的内容
output.Content.Append("内容");
以上语句会覆盖内部内容
output.Content.GetContent();
通过以上语句获取不到内部内容,可通过以下语句实现:
output.GetChildContentAsync().Result;
TagName,SetAttribute 和 SetContent
<email mail-to="123@qq.com" title="title" alt="alt"></email>
output.TagName="a";
替换原标签<email></email>为<a></a>
output.Attributes.SetAttribute("href", "mailto:123@qq.com");
或 output.Attributes.Add("hrefend", "hrefend-value");
设置标签的属性href="mailto:123@qq.com",都为添加标签属性到末尾
<a title="title" alt="alt" href="mailto:123@qq.com" hrefend="hrefend-value">123@qq.com</a>
output.Attributes.Add("hrefend", "hrefend-value");
output.Content.SetContent("abc");
设置标签里的内容文本
RemoveAll、PreContent.SetHtmlContent 和 PostContent.SetHtmlContent
1 2 3 4 5 6 7 8 9 10 |
[HtmlTargetElement(Attributes = "bold")] public class BoldTagHelper : TagHelper { public override void Process(TagHelperContext context, TagHelperOutput output) { output.Attributes.RemoveAll("bold"); output.PreContent.SetHtmlContent("<strong>"); output.PostContent.SetHtmlContent("</strong>"); } } |
1 2 3 |
<p bold>Use this area to provide additional information.</p> <bold> Is this bold?</bold> |
会将带bold的属性移去,设置内容为
1 |
<p><strong>Use this area to provide additional information.</strong></p> |
用多个 [HtmlTargetElement]
属性修饰类会导致目标出现逻辑 OR。 例如,使用下面的代码时,系统将匹配出 bold 标记或 bold 属性。
[
] [ ]将多个属性添加到同一语句时,运行时会将其视为逻辑 AND。 例如,在下面的代码中,HTML 元素必须命名为“bold”并具有名为“bold”的属性 (<bold bold />
) 才能匹配。
[
]也可使用 [HtmlTargetElement]
更改目标元素的名称。 例如,如果你希望 BoldTagHelper
以 <MyBold>
标记为目标,则可使用以下属性:
[
]
2、自定义TagHelper建议一些规则
类放在文件夹TagHelpers中,类名为*TagHelper,比如EmailTagHelper,使用驼峰首字母大写。那么对应的标识为字母-字母,如MyEmailTagHelper对应的html为<my-email>,可以使用属性指定标签名称如:
[HtmlTargetElement("MyEmail"]
public class EmailTagHelper:TagHelper
则匹配的标签为<myemail>和<MyEmail>,大小写忽略不计MYemail也可。
3、关于引用
主要引用的是程序集,而不是所有的命名空间
namespace AuthoringTagHelpers.TagHelpers
{
public class EmailTagHelper:TagHelper
{}
}
若要使 EmailTagHelper
类可用于所有 Razor 视图,请将 addTagHelper
指令添加到 views/_ViewImports cshtml 文件中:
@addTagHelper *, AuthoringTagHelpers
若没有标签提示,请编译一下程序。
4、传递类model,条件表达式true或false到自定义taghelper中
@{
Student student=new Student{Name='jone',Old=22};
bool flag=true;
}
<email my-model="student" condition="flag"></email>
<email condition="flag"></email>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[HtmlTargetElement(Attributes = nameof(Condition))] // [HtmlTargetElement(Attributes = "condition")] public class ConditionTagHelper : TagHelper { public bool Condition { get; set; } public override void Process(TagHelperContext context, TagHelperOutput output) { if (!Condition) { output.SuppressOutput();//什么也不输出 } } } |
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4