1

我有一个模型和一个字段......等等。这很简单。但是,我需要从我的视图中获取字段中的“描述”属性和您的“名称”属性。很明显,@Html... 可以用“DisplayNameFor”返回这个。但是,如何获得“描述”属性?没有像 @Html.DisplayDescription 这样的 Helper?有可能得到这个吗?

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

谢谢你的帮助。对不起英语不好。;)

4

1 回答 1

16

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

@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)
于 2013-08-14T14:41:15.030 回答