Не показывать метку для пустого свойства с LabelFor? - PullRequest
1 голос
/ 03 июня 2011

Я использую MVC3 с Razor, и у меня есть модель, которая имеет довольно много свойств, которые иногда пусты.Кроме пользовательского htmlHelper или использования if / then в представлении для каждой пары LabelFor / DisplayFor, есть ли способ не отображать LabelFor / DisplayFor для свойства, которое является пустым или нулевым?

Ответы [ 2 ]

1 голос
/ 05 июня 2011

Я создал свой собственный помощник: LabelAndDisplayFor, который проверяет наличие пустого / пустого значения, а затем выбирает отображение поля.

    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 ...
1 голос
/ 03 июня 2011

Нет .... Вам нужны вышеуказанные решения или дополнительные модели просмотра. Сожалею!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...