我在aspx页面上有一堆文本框,其ID以“txt”为前缀,ID的其余部分在某个对象中具有相同名称的相应属性。我希望能够枚举这些字符串属性并更新它们找到相同名称(删除前缀)的文本框。有任何想法吗?我知道使用Dictionary
我可以解决问题,但这并不理想。
答案 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");
答案 2 :(得分:0)
只需找到页面上的所有文本框控件,然后使用反射填充相应的属性。