TagHelper指定有效的属性
本文关键字:属性 有效 TagHelper | 更新日期: 2023-09-27 17:51:00
我正在尝试在MVC 6/ASP中创建一个自定义标签帮助器。. Net vNext - taghelper工作得很好,然而,是否有一种方法可以指定有效的asp属性与标签一起使用,以便它们出现在智能感知中?例如,我希望asp-ajax和asp-onsuccess在视图中添加符合标签助手标准的标签时出现在智能感知列表中:
[TargetElement("form", Attributes = AjaxForm)]
public class UnobtrusiveFormTagHelper : TagHelper
{
private const string AjaxForm = "asp-ajax";
public override void Process(TagHelperContext context, TagHelperOutput output)
{
base.Process(context, output);
output.Attributes.Add("data-ajax", true);
output.Attributes.Add("data-onsuccess", context.AllAttributes["asp-onsuccess"]);
}
}
用法:
<form asp-ajax="true" asp-onsuccess="dothis();">
Thanks in advance
您现在拥有的(Attributes = AjaxForm
)您将在form
标签的智能感知中获得asp-ajax
。如果您还想在form
标签上的智能感知中提供data-onsuccess
,您可以添加另一个TargetElement
属性,即:[TargetElement("form", Attributes = "asp-onsuccess")]
。我要注意的是,像这样添加Attributes
只控制TagHelper
"何时"运行。可以这样想:只有当这些属性出现在HTML元素上时才运行。
如果你想使用属性的值并提供智能感知,你可以添加属性:
public bool AspAjax { get; set; }
[HtmlAttributeName("asp-onsuccess")]
public string AspOnSuccess { get; set; }
此方法不控制TagHelper
"何时"运行,但提供了一种将信息输入TagHelper
的方法。它将使您能够获取它们的值并将它们添加为data-
属性。请注意,通过添加AspAjax
/AspOnSuccess
作为属性,它们的值在output.Attributes
上不再存在,因此您不需要删除它们。
希望这对你有帮助!