您好我正在使用实体框架作为我的mapper,我有dropDownList,我想在代码behinde DataTextField中设置我的类的某些属性,但我不想用“someProperty”cos静态执行会改变我模型中的字段,这个地方会让我异常。我怎么能这样做,如果属性名称会改变,这里绑定将指向更改的属性?
我找到了更好的解决方案:
public static string GetPropertyName<T, TReturn>(Expression<Func<T, TReturn>> expression)
{
MemberExpression body = (MemberExpression)expression.Body;
return body.Member.Name;
}
然后:
GetPropertyName((SampleClass) => r.SampleProperty)
所以这不是静态字符串,但我仍然不满意当我更改实体模型中的字段时,这里我有一个错误,这是否可能随着模型的变化,这种绑定也会改变?
答案 0 :(得分:0)
我们在数据绑定之前将业务对象映射到匿名对象,如下所示:
var objectsToBindToDropdown = businessObjects.Select(o => new
{
SomeProperty1 = o.BusinessProperty1,
SomeProperty2 = o.BusinessProperty2
});
dropDownList.DataTextField = "SomeProperty1";
// TODO: bind the drop down list
如果模型有变化,例如BusinessProperty1重命名为AnotherBusinessProperty1,您将收到编译错误,这正是目标。