Нет Intelisense для пользовательского TagHelper для ModelExpression с использованием [HtmlAttributeName ("for")] - PullRequest
0 голосов
/ 04 января 2019

Нет intelisense (предложения свойств модели), когда имя атрибута в ModelExpression пользовательского помощника тега отличается от " asp-for "


Это не работает:

[HtmlAttributeName("for")] public ModelExpression ForExpression { get; set; }

[HtmlAttributeName("abc-for")] public ModelExpression ForExpression { get; set; }


Это работает как ожидалось - свойства модели перечислены:

[HtmlAttributeName("asp-for")] public ModelExpression ForExpression { get; set; }


ASP.NET Core 2.2

Visual Studio 2017

1 Ответ

0 голосов
/ 04 января 2019

Во-первых, убедитесь, что вы перестраиваете свой проект после любого изменения имени атрибута html для помощника по тегам, если хотите видеть обновленный intelisense в своих представлениях.

Во-вторых, убедитесь, что дополнительные селекторы не вызывают проблему. У HtmlTargetElementAttribute есть дополнительные свойства, с помощью которых вы можете сузить время запуска помощника по тегам. Эти дополнительные свойства:

Если вы установите значения для этих свойств, вы не увидите intelisense в целевом теге HTML, если не выполняете все условия.

Возьмем для примера:

[HtmlTargetElement("input")]
public class PlaceholderTagHelper : TagHelper
{
    [HtmlAttributeName("asp-for")]
    public ModelExpression ForExpression { get; set; }
}

Как только вы напишите тег <input>, появится intelisense для ModelExpression. Но если вы добавите требование атрибута disabled, например:

[HtmlTargetElement("input", Attributes = "disabled")]
public class PlaceholderTagHelper : TagHelper
{
    [HtmlAttributeName("asp-for")]
    public ModelExpression ForExpression { get; set; }
}

... тогда intelisense появится, как только вы выполните все условия, которые в этом сценарии представляют собой тег <input> и имеют атрибут disabled.

...