Html.Label不工作?

时间:2011-12-04 16:45:14

标签: asp.net-mvc lambda label

我为LabelFor构建了一个扩展,如下所示:

public static MvcHtmlString LabelFor<TModel, TValue>(this HtmlHelper<TModel> self, Expression<Func<TModel, TValue>> expression, Boolean showToolTip, string sufix = "")
{
    string description = string.Empty;
    var metadata = ModelMetadata.FromLambdaExpression(expression, self.ViewData);

    if (showToolTip)
        description = metadata.Description;

    return LabelFor(metadata.DisplayName, description, self.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(ExpressionHelper.GetExpressionText(expression)), sufix: sufix);
}

这是这样使用的:

<%: Html.LabelFor(model => model.ModelViewAd.TypeOfAd, false)%>

属性确实具有如下显示属性:

[Display(Name = "Type of ad", Description = "")]

使用断点我可以看到metadata.DisplayName设置为null?

2 个答案:

答案 0 :(得分:2)

使用此属性装饰您的属性:

[DisplayName("Type of ad")]

答案 1 :(得分:1)

在几次清理和重建后离开时没有任何变化的问题。所以代码是正确的。