我有一个基于模型的DescriptionFor助手,如下所示:
public static HtmlString DescriptionFor<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TProperty>> expression) where TModel : class
{
var metaData = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
return new HtmlString(metaData.Description.ToStringOrEmpty());
}
这会关闭DataAnnotations.DisplayAttribute(特别是Description参数)并且它可以流畅地工作。
我现在有一个案例,我的模型有一个IEnumerable<foo>我正在循环的模型,并且每个枚举成员foo都有一个带有s 的枚举。DisplayAttribute大多数(但不是全部)DisplayAttribute属性都提供了一个Description属性,我想在我的循环中公开它,如下所示:
@foreach(var fooObject in Model.foos){
@Html.Description(fooObject, x=>x.fooEnumVal)
}
...这将显示每个foo对象的枚举值描述。
我很快发现它与模型助手不太相似。有人可以为此指出正确的方向吗?