0
A
回答
5
最簡單的解決方案將添加驗證器到文本框(即RequiredFieldValidator)。它們允許您指定自定義錯誤消息,並且可以通過簡單地在後面的代碼中調用Page.Validate()來進行檢查。
如果這不是一個選項,ASP.Net控件嵌套在一個層次結構中,所以您將需要使用一些遞歸來拾取頁面上的每個文本框。以下功能代碼循環瀏覽頁面上的所有控件集合,並在文本框爲空時附加錯誤消息。
protected void buttonClick(object sender, EventArgs e)
{
List<String> errors = new List<String>();
ValidateTextboxes(errors, this.Controls);
if (errors.Count > 0)
{
// Validation failed
}
}
protected void ValidateTextboxes(List<String> errors, ControlCollection controls)
{
foreach (Control control in controls)
{
if (control is TextBox)
{
// Validate
TextBox tb = control as TextBox;
if (tb.Text.Length == 0)
errors.Add(tb.ID + ": field is required:");
}
if (control.Controls.Count > 0)
ValidateTextboxes(errors, control.Controls);
}
}
0
有幾種方法可以做到這一點。你可以通過使用基類Control類的遞歸來實現,從任何必要的點開始,並引用controlInstance.Controls來獲得子控件測試,以查看它們是否是文本框。這不是最佳的。
您還可以保留對這些文本框的引用列表,並使用它們循環遍歷它們。這更快,更高效。你可以用一串字符串和FindControl來做同樣的事情。
你也可以使用內置的驗證器,所以你不必這樣做。當然,有限制。
4
當我用的WebForms,我有我已經創建了一個擴展方法:
public static class PageExtensions
{
public static IEnumerable<Control> All(this ControlCollection controls)
{
foreach (Control control in controls)
{
foreach (Control grandChild in control.Controls.All())
{
yield return grandChild;
}
yield return control;
}
}
}
,並使用它來選擇頁面上的所有文本框:
this.Form.Controls
.All()
.OfType<TextBox>()
.ToList()
.ForEach(t => Validate(t.Text));
相關問題
- 1. 如何使用循環掃描ASP .NET頁面中的所有控件?
- 2. 使用掃描儀輸入的所有for循環參數
- 3. 在for循環中掃描輸入
- 4. 我如何掃描使用php/for循環的方形矩陣?
- 5. 如何使用for-each循環掃描int數組對象?
- 6. 使用掃描儀循環
- 7. ASP.Net - 循環當前頁面中的所有HTML組件
- 8. 如何禁用ASP.NET頁面中的所有控件?
- 9. 使用For循環從文本文件中使用掃描器讀取數據
- 10. 陣列掃描儀for循環
- 11. 從for循環中的用戶輸入掃描
- 12. C掃描循環
- 13. 循環掃描儀
- 14. 如何遍歷頁面中所有ASP.NET UpdatePanel中的所有控件?
- 15. java如何在循環中使用1臺掃描儀
- 16. 循環遍歷頁面上的所有用戶控件
- 17. 在R中構建一個循環來掃描目錄中的所有文件
- 18. 如何使用foreach循環刪除面板中的所有控件?
- 19. 在C++中掃描頁面?
- 20. ASP.NET如何做For循環與控制
- 21. For循環中的多個掃描器輸入
- 22. For循環和while循環跳過掃描儀
- 23. 如何刪除使用for循環的所有檢查文件?
- 24. 如何在此腳本的for循環中使用for循環?
- 25. 使用上下文:組件掃描掃描所有基本包
- 26. iOpus iMacro網頁掃描循環
- 27. DynamoDB掃描中的無限循環
- 28. 如何在java中使用for循環打印所有數組
- 29. 使用'for'循環遍歷目錄中的所有文件
- 30. 使用掃描儀循環hasNext()