我正在尝试找到一种方法来循环 EF 对象的属性并更新这些属性的值。更具体地说,我有 50 个字段,其中最多填充 50 个下拉列表。所有 50 个可能都需要填充,也可能不需要填充。
为了解决这个问题,我有一个中继器,最多可以创建 50 个 DDL。用户将为每一项选择值,然后按下更新按钮。我正在循环遍历中继器中的项目,并且可以记录我在中继器中进行的迭代。我还想使用这个计数来知道我需要更新哪个字段。例如,DDL1=FIELD1,DDL2=FIELD2,....)。
这是我正在尝试做的事情的一个例子:
using (Data.Entities dataContext = new Data.Entities)
{
var efObject = dataContext.EFData.Where(c => c.ID = [SOMEID]).First();
int posCount = 0;
foreach (RepeaterItem rep1 in repeaterControl.Items)
{
DropDownList ddlControl= (DropDownList)rep1.FindControl("ddlControl");
//Here is where I need to update a field
//Something like: efObject.Field# = ddlControl.SelectedValue;
}
}
有什么方法可以动态创建我需要更新的属性名称?
是否有一些我可以通过索引访问的属性集合?
这是否与我应该采取的方式相距甚远?
任何和所有的帮助将不胜感激。谢谢。
你可以做这样的事情。
var properties = typeof(EFType).GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (var property in properties)
{
var control = (DropDownList)rep1.FindControl("ddlControl" + property.Name);
property.SetValue(efObject, control.SelectedValue, null);
}
SelectedValue
是字符串。因此,如果需要,您需要注意类型转换。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)