asp.net 核心 Razor 页面:希望 DisplayAttribute 描述显示为 title/tooltip
asp.net core Razor Pages: want DisplayAttribute Description to display as title/tooltip
我有一个 asp.net 核心 (.Net 5) Razor Pages 应用程序。在我的模型中,我有一个 属性 装饰如下:
[Display(Name = "Borrower Name", Prompt = "Borrower Name", Description = "Restrict the search results by borrower name.")]
[StringLength(255)]
public string BorrowerName { get; set; }
我希望上面设置的“描述”属性 呈现为输入的标题(又名工具提示)。这是我渲染它的方式。它呈现正确,占位符正确设置为提示(“借款人姓名”),但我的描述没有呈现为“标题”属性。我错过了什么?
<label asp-for="BorrowerName" class="form-label"></label>
<input asp-for="BorrowerName" class="form-control" />
这是渲染的内容:
<input class="form-control" type="text" data-val="true" data-val-length="The field Borrower Name must be a string with a maximum length of 255." data-val-length-max="255" id="BorrowerName" maxlength="255" name="BorrowerName" placeholder="Borrower Name" value="">
文档 (https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.dataannotations.displayattribute.description?view=net-5.0) 说“描述 属性 通常用作工具提示或描述 UI 元素”,但没有关于如何实现这一点的线索.
您必须手动完成。例如:
public static class Extensions
{
public static string GetDescription<T>(string propertyName) where T: class
{
MemberInfo memberInfo = typeof(T).GetProperty(propertyName);
if (memberInfo == null)
{
return null;
}
return memberInfo.GetCustomAttribute<DisplayAttribute>()?.GetDescription();
}
}
用法:
<input asp-for="BorrowerName" class="form-control" title='@Extensions.GetDescription<YourClass>("BorrowerName")'/>
我有一个 asp.net 核心 (.Net 5) Razor Pages 应用程序。在我的模型中,我有一个 属性 装饰如下:
[Display(Name = "Borrower Name", Prompt = "Borrower Name", Description = "Restrict the search results by borrower name.")]
[StringLength(255)]
public string BorrowerName { get; set; }
我希望上面设置的“描述”属性 呈现为输入的标题(又名工具提示)。这是我渲染它的方式。它呈现正确,占位符正确设置为提示(“借款人姓名”),但我的描述没有呈现为“标题”属性。我错过了什么?
<label asp-for="BorrowerName" class="form-label"></label>
<input asp-for="BorrowerName" class="form-control" />
这是渲染的内容:
<input class="form-control" type="text" data-val="true" data-val-length="The field Borrower Name must be a string with a maximum length of 255." data-val-length-max="255" id="BorrowerName" maxlength="255" name="BorrowerName" placeholder="Borrower Name" value="">
文档 (https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.dataannotations.displayattribute.description?view=net-5.0) 说“描述 属性 通常用作工具提示或描述 UI 元素”,但没有关于如何实现这一点的线索.
您必须手动完成。例如:
public static class Extensions
{
public static string GetDescription<T>(string propertyName) where T: class
{
MemberInfo memberInfo = typeof(T).GetProperty(propertyName);
if (memberInfo == null)
{
return null;
}
return memberInfo.GetCustomAttribute<DisplayAttribute>()?.GetDescription();
}
}
用法:
<input asp-for="BorrowerName" class="form-control" title='@Extensions.GetDescription<YourClass>("BorrowerName")'/>