我看到了其他几个选项:
- 对列表项使用部分视图并在那里检查一次 NULL。
- 添加扩展方法以简化 NULL 检查。
这些是我为自己编写的最常用的扩展方法之一:
public static TResult PropGet<TObject, TResult>(this TObject obj, Func<TObject, TResult> getter, TResult defaultValue) {
if (ReferenceEquals(obj, null))
return defaultValue;
var res = getter.Invoke(obj);
return ReferenceEquals(res, null) ? defaultValue : res;
}
public static TResult PropGet<TObject, TResult>(this TObject obj, Func<TObject, TResult> getter) {
return PropGet(obj, getter, default(TResult));
}
因此,根据您的观点,您可以这样写:
<input value="model.addresses[0].PropGet(a => a.street)" />