Я вижу пару других вариантов:
- Использовать частичное представление для элементов списка и проверять наличие 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)" />