1

この署名を使用して MVC Html ヘルパーを作成しました。

  public static MvcHtmlString EditFieldFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, object additionalViewData = null)

オブジェクトのプロパティを反映し、反映されたプロパティごとに EditFieldFor を呼び出す別のヘルパーを構築しようとしています。しかし、ご覧のとおり、そのメソッドには式が必要です。

PropertyInfo を式に変換するにはどうすればよいですか?

4

1 に答える 1

2

この答えは私に何をすべきかを示しました。これが私がしたことです:

foreach (var propertyInfo in editFields)
{
    var expParam = Expression.Parameter(typeof(TModel)); // TModel is a generic parameter on this method
    var expProp = Expression.Property(expParam, propertyInfo);
    var expression = Expression.Lambda(expProp, expParam);

    var fieldHtml = (MvcHtmlString)typeof (HtmlHelpers)
        .GetMethod("EditFieldFor")
        .MakeGenericMethod(typeof (TModel), propertyInfo.PropertyType)
        .Invoke(null, new object[] {html, expression, null});

    editFormHtml.Append(fieldHtml);
}
于 2012-06-11T21:29:49.613 に答える