我的ASP.NET表单中有大约65个文本框字段。
我没有逐个将所有参数添加到SqlCommand
,而是想这样做。
using (SqlCommand com = new SqlCommand(query, con))
{
string[] fields = { "EmployeeID", "EmployeeNumber", "FirstName", "MiddleName", "LastName" };
foreach (string fld in fields)
{
TextBox tb = (TextBox)Page.FindControl(fld);
com.Parameters.AddWithValue("@" + fld, tb.Text );
}
}
在考虑此类场景的性能时,使用FindControl
方法是一个好主意。
答案 0 :(得分:1)
您无需在页面中找到所有文本框,而只能循环显示文本框控件: -
foreach (TextBox textbox in Page.Controls.OfType<TextBox>())
{
//Your Code here
}
但我确实注意到与FindControl
相比,你将获得多少性能提升。
另外,正如@AFract所提到的,因为Control集合不是递归的,为了递归地获取所有控件,你可以使用这个非常有用的扩展方法: -
public static IEnumerable<TControl> GetChildControls(this Control control) where TControl : Control
{
var children = (control.Controls != null) ? control.Controls.OfType<TControl>() : Enumerable.Empty<TControl>();
return children.SelectMany(c => GetChildControls(c)).Concat(children);
}
借鉴Here。