我希望能够打印出模型的成员名称/显示名称。这类似于使用HtmlHelper<TModel>.LabelFor
,但文本不包含在label
中。为了这个目的,MVC中是否已经内置了一个扩展方法?我找不到一个,所以我查看LabelFor
对Reflector做了什么,并制作了LabelTextFor
方法:
public static string LabelTextFor<TModel, TValue>(this HtmlHelper<TModel> source, Expression<Func<TModel, TValue>> expression)
{
var memberName = ExpressionHelper.GetExpressionText((LambdaExpression)expression);
var metadata = ModelMetadata.FromLambdaExpression(expression, new ViewDataDictionary<TModel>());
return metadata.DisplayName ?? metadata.PropertyName ?? memberName.Split('.').Last();
}
我想我应该改变这个方法的名称。我们对此表示赞赏。
答案 0 :(得分:0)
MVC发布的HTML扩展不是为自定义外观而设计的,而是为了您的目的而设计用于更多“语义”描述。
您想要做的事情,实际上更简单,不需要额外的扩展,但通过自定义模板。请查看Brad Wilson's great article series了解如何操作。
答案 1 :(得分:0)
我决定使用我创建的方法。