我有一个基于模型的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
对象的枚举值描述。
我很快发现它与模型助手不太相似。有人可以为此指出正确的方向吗?