2

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

4

3 回答 3

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);
}
于 2012-08-23T15:57:35.067 回答
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

于 2012-08-23T16:06:45.960 回答
0

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

于 2012-08-23T15:59:56.990 回答