如何在辅助方法中检索模型属性

时间:2013-02-04 22:51:50

标签: asp.net-mvc asp.net-mvc-3

我正在使用以下签名创建一个html帮助器方法:

public static MvcHtmlString MyHelperMethod<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression)

我知道我可以使用以下内容获取作为表达式传递的属性的值:

ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
object modelValue = metadata.Model;

在同一个模型中,我有另一个属性,我想在这个帮助器方法中检索它的值。我如何检索这个其他属性的值?

1 个答案:

答案 0 :(得分:0)

你可以使用反射来做到这一点。

var property = typeof (TModel).GetProperty("yourProperty", BindingFlags.Instance | BindingFlags.Public);
var value = property.GetValue(helper.ViewData.Model, null);

常量“yourProperty”当然可以作为辅助方法的参数。

可能有更好的方法,但这个应该有效。