在頁面上置放一個 Button,UseSubmitBehavior 屬性值預設為 True,將 OnClientClick 屬性值設為 "return confirm('確定執行嗎?');" 。
aspx 原始碼
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="return confirm('確定執行嗎?');" />
輸出 HTML 原始碼
<input type="submit" name="Button1" value="Button" onclick="return confirm('確定執行嗎?');" id="Button1" />
從 HTML 原始碼可以看出它的 type 是 submit,這種按鈕相當於執行 form1 的 submit,所以在 onclick 事件中無須去呼叫 __doPostBack 函式。在 onclick 的事件中,當使用者按下「是」時會傳回 True,此時就會執行 form1 的 submit 動作;當使用者按下「否」時就會傳回 False,而 form1 的 submit 動作就不會執行。
接下來將 Button 的 UseSubmitBehavior 屬性值預設為 False,重新執行一次看一下結果。
aspx 原始碼
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="return confirm('確定執行嗎?');" UseSubmitBehavior="False" />
輸出 HTML 原始碼
<input type="button" name="Button1" value="Button"
onclick="if (confirm('確定執行嗎?')==false) {return false;};__doPostBack('Button1','')" id="Button1" />
onclick="if (confirm('確定執行嗎?')==false) {return false;};__doPostBack('Button1','')" id="Button1" />
這時只有當使用者按「否」時才會傳回 Fasle,而按「是」時就不會執行 return 的動作,所以就會執行後面的 __doPostBack 函式了。這種寫法就算是 Button 的 UseSubmitBehavior 屬性值預設為 True,一樣可以正常執行,所以結論就是以第二種方法來做比較具通用性。