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

发布于 2024-12-11 20:35:49 字数 339 浏览 0 评论 0原文

我有以下服务器端 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 中提供服务器端参数。

感谢您的帮助

I have following serverside onclick method:

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

So any advice here? I can't do it the clientside way, because I need to give a server side parameter within the url.

Thanks for help

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

瘫痪情歌 2024-12-18 20:35:49

为什么不在客户端做呢?

 <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;
}

why not do it client side?

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

and have a javascript method:

function validateForm(){
    if(document.getElementById('<%= txtSearch.ClientID %>').value == '')
        return false;
    else
        return true;
}
稀香 2024-12-18 20:35:49

一旦您已经执行服务器端 Click 事件,您就无法避免回发。

替代方案:

  • 使用客户端函数来检查和验证并仅在某些情况下调用服务器端单击或返回 false 以避免它。
  • 使用 UpdatePanel 方法启用部分渲染并最大限度地减少回发的影响。仍然会有回发和整个页面生命周期,但页面闪烁最少。

对于您的情况,我认为您可以简单地在客户端完成所有操作,上面提供的代码很容易用 JQuery 编写。

you cannot avoid the postback once you are already executing the server side Click event.

alternatives:

  • use a client side function to check and validate and invoke a server side click only in certain cases or return false to avoid it.
  • Use UpdatePanel method to enable partial rendering and minimize the impact of the postback. There will still be a postback and whole page lifecycle but minimal page flickering.

in yoour case I think you can simply do everything client side, the code you provided above is easy to write in JQuery.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文