4
是否有可能创建Expression<Func<TModel, bool>>()
可在不同htmlHelpers(在CheckBoxFor()
例如)被使用,如果我有一个模型对象如何创建表达式<Func <TModel,TProperty >>;
this HtmlHelper<TModel> htmlHelper
和属性(通过反射)的名称。
是否有可能创建Expression<Func<TModel, bool>>()
可在不同htmlHelpers(在CheckBoxFor()
例如)被使用,如果我有一个模型对象如何创建表达式<Func <TModel,TProperty >>;
this HtmlHelper<TModel> htmlHelper
和属性(通过反射)的名称。
肯定的:
static Expression<Func<TModel,TProperty>> CreateExpression<TModel,TProperty>(
string propertyName)
{
var param = Expression.Parameter(typeof(TModel), "x");
return Expression.Lambda<Func<TModel, TProperty>>(
Expression.PropertyOrField(param, propertyName), param);
}
则:
var lambda = CreateExpression<SomeModel, bool>("IsAlive");
没有! Marc Gravell不应该在这里!这是Jon Skeet的问题! – 2013-04-25 14:30:41
非常感谢!简单而有效! – Anelook 2013-04-25 15:23:55
我有另一个连接的问题 - 如果我在我的视图中有一个更复杂的属性,一个类的实例会怎么样。所以不只是一个简单的属性是String或者Boolean,而是一个内部拥有更多属性的对象。例如,这就是我如何为这样的“内部”属性'@ Html.CheckBoxFor(m => m.Config.All)'声明简单的复选框。是否有可能创建这样的lambda,它将反映对象内的属性 - “m => m.Config.All”。 – Anelook 2013-04-26 06:50:53