簡體   English   中英

在Razor中檢查null的Syntactic Sugar

[英]Syntactic Sugar to check null in Razor

有沒有更好的方法來編寫razor cshtml來檢查嵌套對象的null,這樣如果容器為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))

太漫長了

您可以嘗試創建自己的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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM