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 に答える