У меня есть такой метод расширения:
public static string GetValueFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
MemberExpression body = (MemberExpression)expression.Body;
string propertyName = body.Member.Name;
TModel model = helper.ViewData.Model;
string value = typeof(TModel).GetProperty(propertyName).GetValue(model, null).ToString();
return value;
}
Он очень хорошо работает для «одного уровня», например:
proj => proj.MyProperty
Таким образом, он возвращает значение для MyProperty, расположенного под моделью.
Но это не работает для «многоуровневого» типа этого:
proj => proj.Level1.MyProperty
Здесь мы пытаемся вернуть значение для MyProperty, расположенного под моделью, но мы теряем level1!
Не знаю, ясно ли я?
Спасибо.