我试图阻止我的asp.net按钮执行PostBack
,如下所示:
<asp:button runat="server".... OnClientClick="Confirm(); return false;" />
这是阻止按钮PostBack
但是我的OnClick
按钮事件也没有运行。
我该如何解决?
我想要做的是显示确认消息,但如果用户点击“否”&#39;按钮执行PostBack
确认功能:
function Confirm() {
var confirm_value = document.createElement("INPUT");
confirm_value.type = "hidden";
confirm_value.name = "confirm_value";
if (confirm("Do you want to save data?")) {
confirm_value.value = "Yes";
} else {
confirm_value.value = "No";
}
document.forms[0].appendChild(confirm_value);
}
我的按钮回叫(当&#39;返回false&#39;附加到OnClientClick时,不会打电话:
public void OnButtonClicked(object sender, EventArgs e)
{
string confirmValue = Request.Form["confirm_value"];
if (confirmValue == "Yes")
{
//my code
}
}
答案 0 :(得分:1)
只有当您想要阻止回发时,OnClientClick
事件处理程序才应返回false
。最简单的方法是:
<asp:Button runat="server" OnClientClick="if (!confirm('Do you want to save data?')) return false;" ... />
如果在确认过程中需要更多处理,可以将它放在Javascript函数中,该函数应该返回一个布尔值:
<asp:Button runat="server" OnClientClick="if (!confirmSaving()) return false;" ... />
function confirmSaving() {
...
if (some condition) {
...
return true;
} else {
...
return false;
}
}
注意:我们可以简单地返回函数的值,而不是在OnClientClick
中添加条件。但是,对于某些控件,该解决方案失败了(参见__doPostBack only works if there is a LinkButton, Calendar or WizardStep control on the page),而条件版本适用于所有控件。