我需要存储表单中的数据以便从会话中恢复。 下面是我对文本框的通用方法的粗略尝试:
加载会话:
Dictionary<string, string> AppInfo = (Dictionary<string,string>) Session["ApplicantionInfo"];
this.Controls.OfType<TextBox>()
.ToList<TextBox>()
.ForEach( x => x.Text = AppInfo[x.ID] );
保存会话:
Session["ApplicationInfo"] = this.Controls.OfType<TextBox>()
.ToList<TextBox>()
.ToDictionary<TextBox,string>(kvp => kvp.ID);
然而,似乎Controls集合对我不起作用。我做错了什么?
当我快速观察时, this.Controls.OfType<TextBox>()
在运行时没有产生任何结果。
答案 0 :(得分:3)
答案 1 :(得分:1)
这是我访问表单控件的方式。
for (int i = 0; i < this.Controls.Count; i++)
{
this.Controls[i].Visible = false;
}
答案 2 :(得分:1)
怎么样
public static List<Control> GetAllControls(List<Control> controls, Type t, Control parent)
{
foreach (Control c in parent.Controls)
{
if (c.GetType()== t)
controls.Add(c);
if (c.HasControls())
controls = GetAllControls(controls, t, c);
}
return controls;
}
并致电
var allControls = new List<Control>();
GetAllControls(allControls, typeof(TextBox), Page);