0
如何动态创建表达式。从PropertyInfo动态创建表达
我有一个自定义EditorFor:
public static class MvcExtensions
{
public static MvcHtmlString GSCMEditorFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, QuestionMetadata metadata)
{
return System.Web.Mvc.Html.EditorExtensions.EditorFor(html, metadata.Expression<TModel, TValue>());
}
}
而且我想这样称呼它:
@foreach (var questionMetaData in Model.MetaData)
{
@Html.GSCMEditorFor(questionMetaData);
}
我QuestionMetaData类看起来是这样的:
public class QuestionMetadata
{
public PropertyInfo Property { get; set; }
public Expression<Func<TModel, TValue>> Expression<TModel, TValue>()
{
return ///what;
}
}
而且我初始化:
public IList<QuestionMetadata> GetMetaDataForApplicationSection(Type type, VmApplicationSection applicationSection)
{
var props = type.GetProperties().Where(prop => Attribute.IsDefined(prop, typeof(ApplicationQuestionAttribute)) &&
applicationSection.Questions.Select(x => x.Name).ToArray().Contains(prop.Name));
var ret = props.Select(x => new QuestionMetadata { Property = x }).ToList();
return ret;
}
如何从PropertyInfo对象创建表达式?
如果该表达式返回属性的值? –