【问题标题】:Show "NULL" for null values in ASP.NET MVC DisplayFor Html Helper在 ASP.NET MVC DisplayFor Html Helper 中为空值显示“NULL”
【发布时间】:2013-04-05 14:02:17
【问题描述】:

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

这是我目前正在处理的“详细信息”视图中的一个项目示例。如果 Description 的值为 null,则现在 if 不显示任何内容。

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

【问题讨论】:

    标签: asp.net-mvc razor html-helper


    【解决方案1】:

    是的,我建议在您的 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.创建文件夹“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)
    

    希望对你有帮助 ;-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多