在ASP.NET MVC DisplayFor Html Helper中为空值显示“NULL”

问题描述 投票:20回答:2

如果模型项的值是@Html.DisplayFor,有没有办法让null值在视图中显示“NULL”?

这是我目前正在处理的详细信息视图中的项目示例。现在如果描述的值是null则不显示任何内容。

<div class="display-field">
    @Html.DisplayFor(model => model.Description)
</div>
asp.net-mvc razor html-helper
2个回答
61
投票

是的,我建议在codefirst模型中使用以下数据注释和可为空的datetime字段:

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

那么在你看来:

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

0
投票

显示字符串,例如“ - ”代替空值,通过“DisplayFor”标准助手使用辅助扩展名显示,即“DisplayForNull”

1.创建文件夹“Helpers”并添加一个新的控制器“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)

希望能帮助到你 ;-)

© www.soinside.com 2019 - 2024. All rights reserved.