在HTML Helper中检索[Display]属性名称

时间:2012-06-05 18:12:17

标签: c# asp.net-mvc

我们有一个带有以下签名的自定义HTML帮助器。

public static MvcHtmlString TextBoxFor<TModel,
    TProperty>(this HtmlHelper<TModel> helper,
    Expression<Func<TModel, TProperty>> property)
{
    var htmlAttributes = new Dictionary<string, object>();

    // ....

    return helper.TextBoxFor(property, htmlAttributes);
}

我想在这里实现placeholder属性,该属性应设置为此控件的标签。标签可以是字符串常量,也可以是为属性的[Display]属性指定的字符串。

我有什么方法可以从这个辅助函数中获取此标签吗?

1 个答案:

答案 0 :(得分:0)

这似乎有效:

ModelMetadata metadata = ModelMetadata.FromLambdaExpression(property, helper.ViewData);
string htmlFieldName = ExpressionHelper.GetExpressionText(property);
string labelText = metadata.DisplayName ?? metadata.PropertyName ?? htmlFieldName.Split('.').Last();
if (!String.IsNullOrWhiteSpace(labelText))
    // labelText contains the label