2015-05-27 4 views
3

Я играю с созданием специального помощника тега в MVC 6/ASP.Net vNext - taghelper отлично работает, однако есть способ указать допустимые asp-атрибуты для использования с тегом, чтобы они появляются в intellisense? Например, я хочу жерех-Аякса и жерех-OnSuccess придумать в списке IntelliSense при добавлении тега в представлении, что соответствует критериям для моего taghelper ниже: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();"> 

заранее спасибо

ответ

6

с тем, что у вас есть сейчас (Attributes = AjaxForm) вы получите asp-ajax в йо ur IntelliSense для form тегов. Если вы хотите, чтобы добавить data-onsuccess в IntelliSense по form тегам, вы можете добавить еще один атрибут TargetElement, aka: [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, поэтому вам не нужно их удалять.

Надеюсь, это поможет!

+0

Спасибо, это был удар по тому, что мне нужно :) – Carl

Смежные вопросы