1 回答

TA贡献1807条经验 获得超9个赞
这当然是可能的,但我只是稍微挖掘了一下源代码,我认为你会发现它比它的价值要麻烦得多。您必须从多个类派生并覆盖方法,然后您必须连接所有自定义内容来代替内置函数。
添加Display属性并不是真正的负担,坦率地说,它的意图更加明确,这总是一件好事。但是,如果您坚决反对使用它,您可以考虑使用像Humanizer这样的库,然后执行以下操作:
@nameof(Model.ProposalNotes).Titleize();
FWIW,您需要将 using 语句添加到您的视图 ( @using Humanizer),但您只能在_ViewImports.cshtml.
此外,根据您实际想要的显示名称,您始终可以创建自定义标签助手。例如,要使用标签自动执行此操作,您可以简单地继承LabelTagHelper(或创建您自己的)并使用您自己的自定义逻辑来确定要在那里显示的显示名称,而不必担心更改诸如DisplayNameFor. 您还可以创建一个自定义标签助手来输出上面的标题名称:
public class TitleizeTagHelper : TagHelper
{
const string ForAttributeName = "asp-for";
[HtmlAttributeName(ForAttributeName)]
public ModelExpression For { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "span";
output.SetContent(For.Name.Titleize());
}
}
然后:
<titleize asp-for="ProposalNotes" />
诚然,这对于如此简单的事情来说有点矫枉过正,但是LabelTagHelper如果实际应用了该属性,您也可以通过窃取支持自定义显示名称的逻辑来加强它。
- 1 回答
- 0 关注
- 154 浏览
添加回答
举报