服务器端onclick但在某些情况下阻止回发

时间:2011-10-26 10:22:34

标签: c# asp.net onclick server-side

我有以下服务器端onclick方法:

protected void btnSearch_Click(object sender, EventArgs e)
{
    if (txtSearch.Text == "" || txtSearch.Text.Length < 4) {
        //NO POSTBACK HERE
    } else {
        Response.Redirect(www.google.be);
    }
}

所以这里有什么建议吗?我无法以客户端方式执行此操作,因为我需要在URL中提供服务器端参数。

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

为什么不做客户端?

 <asp:Button ID="btnSearch" OnClientClick="return validateForm();" OnClick="btnSearch_Click" Text="Send" />

并使用javascript方法:

function validateForm(){
    if(document.getElementById('<%= txtSearch.ClientID %>').value == '')
        return false;
    else
        return true;
}

答案 1 :(得分:1)

在您执行服务器端Click事件后,您无法避免回发。

备选方案:

  • 使用客户端功能仅在某些情况下检查并验证和调用服务器端点击,或者返回false以避免它。
  • 使用UpdatePanel方法启用部分呈现并最小化回发的影响。仍然会有回发和整个页面生命周期,但页面闪烁最小。

在你的情况下,我认为你可以简单地做客户端的一切,你在上面提供的代码很容易用JQuery编写。