Попытка получить значение для в многоуровневой ассоциации модель / свойство - PullRequest
1 голос
/ 15 января 2012

У меня есть такой метод расширения:

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!

Не знаю, ясно ли я?

Спасибо.

1 Ответ

1 голос
/ 15 января 2012

Вы можете использовать ModelMetadata.FromLambdaExpression метод и проверить свойство Model результата

ModelMetadata.FromLambdaExpression(expression, helper.ViewData).Model
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...