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