使用LabelFor不显示空属性的标签?

时间:2011-06-03 18:05:17

标签: asp.net-mvc-3 razor

我正在使用MVC3 w / Razor,我有一个模型,有很多属性,有时是空的。 除了自定义的htmlHelper,或者在每个LabelFor / DisplayFor对的视图中使用if / then之外,有没有办法不为空或null的属性显示LabelFor / DisplayFor?

2 个答案:

答案 0 :(得分:1)

否....您需要上述解决方案或其他视图模型。抱歉!

答案 1 :(得分:1)

我创建了自己的帮助器:LabelAndDisplayFor检查null / empty,然后选择显示该字段。

    public static MvcHtmlString LabelAndDisplayFor<tModel, tValue>(this HtmlHelper<tModel> html, System.Linq.Expressions.Expression<Func<tModel, tValue>> field,
        bool hideIfEmpty = false) {

        if (hideIfEmpty) {
            var v = field.Compile()(html.ViewData.Model);
            if (v == null || string.IsNullOrWhiteSpace(v.ToString())) {
                return MvcHtmlString.Empty;
            }
        }

        StringBuilder result = new StringBuilder();
        result.Append("<div class='display-line'>");
        result.Append("<div class='display-label'>");
        result.Append(html.LabelFor(field));
        result.Append("</div>");

        // ... etc ...