TagHelper指定有效的属性

本文关键字:属性 有效 TagHelper | 更新日期: 2023-09-27 17:51:00

我正在尝试在MVC 6/ASP中创建一个自定义标签帮助器。. Net vNext - taghelper工作得很好,然而,是否有一种方法可以指定有效的asp属性与标签一起使用,以便它们出现在智能感知中?例如,我希望asp-ajaxasp-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

TagHelper指定有效的属性

您现在拥有的(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上不再存在,因此您不需要删除它们。

希望这对你有帮助!