29

Is there a way to get an @Html.DisplayFor value to show "NULL" in the view if the value of the model item is null?

Here's an example of an item in my Details view that I'm working on currently. Right now if displays nothing if the value of the Description is null.

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

2 Answers 2

74

yes, I would recommend using the following data annotation with a nullable datetime field in your codefirst model :

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

then in your view :

@Html.DisplayFor(x => x.last_connection)
Sign up to request clarification or add additional context in comments.

2 Comments

This should be the actual answer.
You made my day. But one problem is that the output is in second bracket.
0

Display a string e.g. "-" in place of null values show via the "DisplayFor" standard helper using a helper extension, i.e. "DisplayForNull"

1. Create Folder "Helpers" and add a new controller "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. In your view

@using WIPRO.Helpers

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

in place of

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

Hope it helps ;-)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.