2012-06-11 2 views
1

반영 속성에 대한 표현을 구축하는 방법 : 나는 EditFieldFor를 객체의 속성에 반영됩니다 다른 도우미를 구축 한 후 전화를 시도하고나는이 서명을 가진 MVC HTML 헬퍼를 구축했습니다

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

을 반사 된 각 속성에 대해 그러나 보시다시피, 그 방법은 표현이 필요합니다.

PropertyInfo를 표현식으로 변환하려면 어떻게해야합니까?

답변

2

This answer은 무엇을해야하는지 알려줍니다. 내가 한 일은 다음과 같습니다.

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); 
} 
+0

그게 답을 게시하는 데 좋은 것입니다. – garfbradaz

관련 문제