在Razor中检查null的语法Sugar

本文关键字:语法 Sugar null 检查 Razor | 更新日期: 2023-09-27 18:00:23

有没有更好的方法来编码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))

太长了

在Razor中检查null的语法Sugar

您可以尝试创建自己的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)