web-dev-qa-db-ja.com

ASP.NET MVC DisplayFor Html Helperでnull値に「NULL」を表示

モデルアイテムの値がnullの場合に、ビューに "NULL"を表示する@Html.DisplayFor値を取得する方法はありますか?

これは、現在作業している詳細ビューのアイテムの例です。現在、説明の値がnullの場合、何も表示されません。

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

はい、次のデータアノテーションをcodefirstモデルでnull可能な日時フィールドとともに使用することをお勧めします。

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

次にあなたの見解では:

@Html.DisplayFor(x => x.last_connection)
67
Chtiwi Malek

文字列を表示します。 null値の代わりの「-」は、ヘルパー拡張を使用する「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)

それが役に立てば幸い ;-)

0
gvth