有没有更好的方法来编写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))
太长了
答案 0 :(得分: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)