結合前端按鈕禁用與後端屬性補強,輕鬆解決使用者連續點擊導致的重複提交問題。
<asp:Button ID="Button1" runat="server" Text="送出"
OnClick="Button1_Click"
OnClientClick="this.form.submit(); this.disabled=true"
UseSubmitBehavior="False" />
關鍵屬性:
OnClientClick:先提交表單,再將按鈕設為禁用,防止二次點擊。UseSubmitBehavior="False":讓 ASP.NET 不產生預設的 `__doPostBack` 腳本,改由瀏覽器原生提交,配合 `this.form.submit()` 運作。protected void Page_Load(object sender, EventArgs e) {
if (Page.IsPostBack) {
Button1.Attributes.Add("disabled", "disabled");
}
}
若使用者停用 JavaScript,後端渲染時仍會輸出 disabled="disabled",確保按鈕在回傳後不可再點擊。