使用枚举更新对象的字符串属性

时间:2012-08-23 15:53:25

标签: c# asp.net .net ienumerable enumeration

我在aspx页面上有一堆文本框,其ID以“txt”为前缀,ID的其余部分在某个对象中具有相同名称的相应属性。我希望能够枚举这些字符串属性并更新它们找到相同名称(删除前缀)的文本框。有任何想法吗?我知道使用Dictionary我可以解决问题,但这并不理想。

3 个答案:

答案 0 :(得分:4)

你可以使用反射来做到这一点:

MyObject data = new MyObject();
foreach (var pi in typeof(MyObject).GetProperties().Where(i =>
                                      i.PropertyType.Equals(typeof(string)))
{
   var control = FindControl("txt" + pi.Name) as ITextControl;
   if (control != null)
       pi.SetValue(data, control.Text, null);
}

答案 1 :(得分:1)

您可以使用控件:

foreach (Control control in divXYZ.Controls)
    if (control is TextBox)
        ((TextBox)control).Text = "whatever";

FindControl是您可以在解决方案中使用的另一种方法:

Control myControl = FindControl("txtYourID");

http://msdn.microsoft.com/en-us/library/486wc64h.aspx

答案 2 :(得分:0)

只需找到页面上的所有文本框控件,然后使用反射填充相应的属性。