我有这种扩展方法:
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 =&gt; proj.MyProperty
因此它返回位于模型下的MyProperty的值。
但它不适合像这样的“多层次”:
proj =&gt; proj.Level1.MyProperty
在这里,尝试返回位于模型下的MyProperty的值,但是我们放松了level1!
我不知道我是否清楚?
感谢。
答案 0 :(得分:1)
您可以使用ModelMetadata.FromLambdaExpression方法并检查结果的Model
属性
ModelMetadata.FromLambdaExpression(expression, helper.ViewData).Model