Попытка написать собственный TagHelper для отображения атрибута Description
свойства модели.Кажется, все работает иначе, но текст описания не передается моим метаданным ModelExpression, он остается null
.
Это приложение ядра 2.1 для asp.net.Я достигаю точки останова в Process
моего TagHelper, так что он запускается.Значение DisplayName
правильно в For.Metadata
, поэтому ModelExpression For
разрешается правильно.
Модель определена в другой сборке, а не код, использующий ее, может ли это быть проблемой?
Модель:
public class MyModel {
[Description("a description")]
[DisplayName("display name")]
public string MyProperty {get; set;}
}
TagHelper:
[HtmlTargetElement("span", Attributes = AttributeName)]
public class DescriptionTagHelper : TagHelper
{
private const string AttributeName = "asp-description-for";
/// <summary>
/// An expression to be evaluated against the current model.
/// </summary>
[HtmlAttributeName(AttributeName)]
public ModelExpression For { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
if (context == null)
{
throw new ArgumentNullException(nameof(context));
}
if (output == null)
{
throw new ArgumentNullException(nameof(output));
}
if (!output.IsContentModified)
{
output.Attributes.SetAttribute("class", "text-muted");
output.Content.SetContent(For.Metadata.Description);
}
}
}
Использование:
<span asp-description-for="MyModel.MyProperty"></span>
Используя intellisense, я вижу, что коллекция For.Metadata.Attributes
содержит DescriptionAttribute
с правильным текстом.Неправильно ли я считать, что метаданные Description
должны быть такими?