EasyTools AlertTextBox 結合驗證與彈出提示:提交時對同一 ValidationGroup 的輸入框驗證,失敗時自動彈出 alert() 顯示錯誤訊息,需搭配 AlertButton/AlertImageButton/AlertLinkButton 使用。


| 屬性 | 型別 | 說明 |
|---|---|---|
| ValidationGroup | string | 驗證群組名稱,需與關聯按鈕一致 |
| AlertMessage | string | 驗證失敗時彈出的訊息內容 |
| Required | bool | 是否必填 |
| RegExPattern | string | 正則驗證模式 |
| RegExErrorMessage | string | 正則不符合時的提示訊息 |
| MinLength / MaxLength | int | 長度限制 |
| DataType | enum | 資料型別:String, Integer, Double, Date, Email, Url 等 |
<%@ Register Assembly="EasyTools" Namespace="EasyTools.Web.Controls" TagPrefix="et" %>
<form id="form1" runat="server">
<div>
<et:AlertTextBox ID="txtUserName" runat="server"
ValidationGroup="RegisterGroup"
AlertMessage="請輸入使用者名稱"
Required="true"
MinLength="3"
MaxLength="20"
RegExPattern="^[a-zA-Z0-9_]+$"
RegExErrorMessage="僅允許英數字與底線" />
<br />
<et:AlertTextBox ID="txtEmail" runat="server"
ValidationGroup="RegisterGroup"
AlertMessage="請輸入有效 Email"
Required="true"
DataType="Email" />
<br />
<et:AlertTextBox ID="txtAge" runat="server"
ValidationGroup="RegisterGroup"
AlertMessage="年齡必須為 1-120 間的數字"
Required="true"
DataType="Integer" />
<br />
<et:AlertButton ID="btnSubmit" runat="server"
Text="註冊"
ValidationGroup="RegisterGroup"
OnClick="btnSubmit_Click" />
</div>
</form>
protected void btnSubmit_Click(object sender, EventArgs e) {
// 此時前端已通過驗證,直接處理業務邏輯
string user = txtUserName.Text;
string email = txtEmail.Text;
int age = int.Parse(txtAge.Text);
// 儲存資料庫...
lblResult.Text = $"註冊成功:{user}, {email}, {age}";
}
public class CustomAlertTextBox : AlertTextBox {
protected override bool ValidateValue(string value) {
// 呼叫基底驗證
if (!base.ValidateValue(value)) return false;
// 自訂:使用者名稱不可為保留字
var reserved = new[] { "admin", "root", "system", "test" };
if (reserved.Contains(value.ToLower())) {
AlertMessage = "此使用者名稱不可使用";
return false;
}
return true;
}
}
AlertButtonValidationGroup 的所有 AlertTextBoxalert(AlertMessage) 並取消提交OnClick| 問題 | 解決 |
|---|---|
| 彈出兩次 alert | 頁面有多個 AlertButton 且 ValidationGroup 相同,確保只有一個提交按鈕 |
| 驗證不生效 | 檢查 ValidationGroup 拼寫、AlertTextBox 與 Button 群組名稱一致 |
| RegEx 不匹配 | 正則字串需雙重跳脫:RegExPattern="^\\d+$" (ASPX 標記中) |
| UpdatePanel 內失效 | 需在 AsyncPostBackTrigger 註冊按鈕,或改用標準 Validator + ValidationSummary |
EasyTools 已停止維護,新專案建議使用原生 RequiredFieldValidator, RegularExpressionValidator, ValidationSummary 配合 ValidationGroup,功能更完整且支援非同步回發。