2013-04-12 13 views
19

C'è un modo per ottenere un valore @Html.DisplayFor per mostrare "NULL" nella vista se il valore dell'articolo del modello è null?Mostra "NULL" per valori null in ASP.NET MVC DisplayFor Html Helper

Ecco un esempio di un elemento nella mia vista Dettagli su cui sto lavorando attualmente. In questo momento se non visualizza nulla se il valore della descrizione è null.

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

risposta

55

sì, mi consiglia di utilizzare la seguente annotazione di dati con un campo datetime nullable nel modello codefirst:

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

quindi a suo avviso:

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

Questa dovrebbe essere la risposta reale. –

+0

Hai reso la mia giornata. Ma un problema è che l'uscita è in seconda fascia. –

0

visualizzare una stringa per esempio "-" al posto dei valori nulli mostrare tramite il "DisplayFor" helper standard utilizzando un'estensione aiutante, vale a dire "DisplayForNull"

1. Creare "aiutanti" delle cartelle e aggiungere un nuovo 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. Secondo lei

@using WIPRO.Helpers 

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

al posto di

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

Speranza che aiuta ;-)

Problemi correlati