TagHelper указва валидни атрибути

Играя си със създаването на персонализиран помощник за маркери в MVC 6 / ASP.Net vNext - помощникът за етикети работи добре, има ли обаче начин да посочите валидни asp- атрибути, които да се използват с маркера, така че да се показват в intellisense?< /strong> Например, искам asp-ajax и asp-onsuccess да се появяват в списъка на intellisense при добавяне на маркер в изгледа, който отговаря на критериите за моя taghelper По-долу:

[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();">

Благодаря предварително


person Carl    schedule 27.05.2015    source източник


Отговори (1)


С това, което имате в момента (Attributes = AjaxForm), ще получите asp-ajax във вашия IntelliSense за form тагове. Ако искате също да предоставите data-onsuccess в IntelliSense на form тагове, можете да добавите друг атрибут TargetElement, известен още като: [TargetElement("form", Attributes = "asp-onsuccess")]. Искам да отбележа, че добавянето на Attributes по този начин контролира само "кога" TagHelper се изпълнява. Мислете за това като да кажете: Изпълнявайте само когато тези атрибути присъстват в HTML елемента.

Ако искате да използвате стойностите на атрибутите И да предоставите IntelliSense, можете да добавите свойства:

public bool AspAjax { get; set; }

[HtmlAttributeName("asp-onsuccess")]
public string AspOnSuccess { get; set; }

Този подход не контролира „кога“ TagHelper се изпълнява, но предоставя начин за въвеждане на информация във вашия TagHelper. Това ще ви позволи да вземете техните стойности и да ги добавите като data- атрибути. Имайте предвид, че като добавите AspAjax/AspOnSuccess като свойства, техните стойности вече не съществуват на output.Attributes, така че не е необходимо да ги премахвате.

Дано това помогне!

person N. Taylor Mullen    schedule 27.05.2015
comment
Благодаря, това беше точно това, от което имах нужда :) - person Carl; 28.05.2015