如何获得“;描述”;属性而不是“;name”;模型的属性-(MVC asp.net)

本文关键字:属性 MVC net asp 描述 何获得 name 模型 | 更新日期: 2023-09-27 18:27:43

我有一个模型和一个字段。。。等等。这是微不足道的。但是,我需要从我的视图中获得字段的"Description"属性和您的"Name"属性。使用@Html。。。很明显,用"DisplayNameFor"可能会返回这个值。但是,如何获得"描述"属性?没有像@Html.DisplayDescription这样的帮助程序?有可能得到这个吗?

[Column("abc")]
[Display(Description = "The Description", GroupName = "The Group", Name = "The Name")]
public string field { get; set; }

谢谢你的帮助。抱歉英语不好

如何获得“;描述”;属性而不是“;name”;模型的属性-(MVC asp.net)

您可以从元数据中获得它:

@model MyViewModel
@{
    var description = ModelMetadata.FromLambdaExpression<MyViewModel, string>(x => x.field, ViewData).Description;
}
@description

或者,如果你和我一样,发现这个非常可怕的代码要在视图中编写,你可以将其封装在一个可重用的助手中:

public static class HtmlExtensions
{
    public static IHtmlString DescriptionFor<TModel, TValue>(
        this HtmlHelper<TModel> html, 
        Expression<Func<TModel, TValue>> expression
    )
    {
        var metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData);
        var description = metadata.Description;
        return new HtmlString(description);
    }
}

所以在你看来,你可以这样使用:

@model MyViewModel
@Html.DescriptionFor(x => x.field)