ASP.NET WebForms 中,前端 JavaScript 驗證與後端 C# 驗證並存。若前端驗證未通過,必須阻止表單提交(Postback),否則後端仍會執行 alert("提交成功") 邏輯。
<asp:Button ID="btnSubmit" runat="server" Text="提交"
OnClientClick="return validateForm();"
OnClick="btnSubmit_Click" />
<script>
function validateForm() {
if (!checkSomething()) {
alert("前端驗證失敗");
return false; // 關鍵:阻止 Postback
}
return true; // 通過才提交
}
</script>
OnClientClick 中只寫 validateForm() 而漏了 return,導致驗證結果被忽略。return false 但函數中拋出 JS 錯誤導致中斷。ASP.NET 內建 RequiredFieldValidator、RegularExpressionValidator 等驗證控件,設定 ValidationGroup 並讓 Button 的 CausesValidation="true",框架自動生成客戶端腳本阻止提交,無需手寫 JS。