使用[HtmlAttributeName(“ for”)]在ModelExpression上没有自定义TagHelper的Intelisense

时间:2019-01-04 16:27:20

标签: asp.net-core asp.net-core-tag-helpers

当自定义标签助手的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 :(得分:0)

首先,如果要在视图上看到更新的智能感知,请确保在标记帮助程序的html属性名称发生任何更改后重建项目。

第二,确保没有其他选择器引起此问题。 HtmlTargetElementAttribute具有其他属性,可以在运行标签帮助程序时使用它们缩小范围。这些其他属性是:

如果您为这些属性设置值,那么如果您不满足所有条件,那么您就不会在目标HTML标记上看到智能提示。

以这个为例:

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

您只要编写<input>标签,就会显示ModelExpression的智能提示。但是,如果要添加disabled属性要求,例如:

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

...然后,只要您满足所有条件(在此情况下为<input>标签并具有disabled属性),就会显示出智能提示。