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