Подтвердить что ты не робот

Показать "NULL" для нулевых значений в ASP.NET MVC DisplayFor Html Helper

Есть ли способ получить значение @Html.DisplayFor для отображения "NULL" в представлении, если значение элемента модели null?

Вот пример элемента в моем представлении "Детали", над которым я сейчас работаю. Прямо сейчас, если ничего не отображается, если значение Описание null.

<div class="display-field">
    @Html.DisplayFor(model => model.Description)
</div>
4b9b3361

Ответ 1

да, я бы рекомендовал использовать следующую аннотацию данных с нулевым полем datetime в вашей модели codefirst:

[Display(Name = "Last connection")]
[DisplayFormat(NullDisplayText = "Never connected")]
public DateTime? last_connection { get; set; }

то на ваш взгляд:

@Html.DisplayFor(x => x.last_connection)

Ответ 2

Отображение строки, например. "-" вместо нулевых значений отображается через стандартный помощник "DisplayFor" с использованием вспомогательного расширения, то есть "DisplayForNull"

1. Создайте папку "Помощники" и добавьте новый контроллер "Helper.cs"

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Linq.Expressions;
using System.Web;
using System.Web.Mvc;

namespace WIPRO.Helpers
{
    public static class Helpers
    {
        public static MvcHtmlString DisplayForNull<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression)
        {
            var metaData = ModelMetadata.FromLambdaExpression(expression, helper.ViewData);

        string valuetodisplay = string.Empty;

        if (metaData.Model != null)
        {
            if (metaData.DisplayFormatString != null)
            {
                valuetodisplay = string.Format(metaData.DisplayFormatString, metaData.Model);

            }
            else
            {
                valuetodisplay = metaData.Model.ToString();

            }

        }
        else
        {
            valuetodisplay = "-";

        }

        return MvcHtmlString.Create(valuetodisplay);

    }

}

2. На ваш взгляд

@using WIPRO.Helpers

@Html.DisplayForNull(model => model.CompanyOwnerPersonName)

вместо

@Html.DisplayFor(model => model.CompanyOwnerPersonName)

Надеюсь, что это поможет; -)