禁用PostBack按钮asp并运行服务器代码

时间:2016-08-26 15:34:01

标签: c# asp.net

我试图阻止我的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
}

 }

1 个答案:

答案 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),而条件版本适用于所有控件。