3

ネストされたオブジェクトのnullをチェックするrazorcshtmlをコーディングして、コンテナがnullの場合にコンテナオブジェクトでnull例外エラーをスローしないようにするためのより良い方法はありますか?例えば ​​:

page.cshtml

Hello @obj1.obj2.prop3

obj1がnullまたはobj1.prop3がnullの場合、エラーがスローされますが、

Hello @Html.DisplayFor(m => obj1.obj2.prop3)

エラーがスローされないように、obj1またはobj1.obj2でnullをチェックできます

Hello @(obj1 == null? "" : (obj1.obj2 == null? "" : obj1.obj2.prop3))

長すぎる

4

1 に答える 1

1

独自のhtmlヘルパーを作成してみることができます。

static class MyOwnHtmlHelpers
{
    public static string EmptyIfNull<TModel>(this HtmlHelper<TModel> helper, Func<TModel, string> accessor)
    {
        try
        {
            var result = accessor.Invoke(helper.ViewData.Model);
            return result;
        }
        catch(NullReferenceException)
        {
            return string.Empty;
        }
    }
}

そして、次のように使用します。

@Html.EmptyIfNull(m => obj1.obj2.prop3)
于 2013-02-20T09:04:46.700 に答える