1

我正在创建一个具有以下签名的 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;

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

4

1 回答 1

0

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

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

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

也许有更好的方法,但是这个应该可以。

于 2013-02-04T22:57:55.040 回答