如何显示模型名称(基本上是LabelFor的内部文本)?

时间:2010-12-18 00:58:02

标签: c# asp.net-mvc

我希望能够打印出模型的成员名称/显示名称。这类似于使用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();
}

我想我应该改变这个方法的名称。我们对此表示赞赏。

2 个答案:

答案 0 :(得分:0)

MVC发布的HTML扩展不是为自定义外观而设计的,而是为了您的目的而设计用于更多“语义”描述。

您想要做的事情,实际上更简单,不需要额外的扩展,但通过自定义模板。请查看Brad Wilson's great article series了解如何操作。

答案 1 :(得分:0)

我决定使用我创建的方法。