【问题标题】:How to disable postback on an asp button and still run OnClick method?如何在 asp 按钮上禁用回发并仍然运行 OnClick 方法?
【发布时间】:2015-03-30 14:32:25
【问题描述】:

是的,可以简单地向 OnClientClick 添加一个 return false,但这并不是很好,因为 OnClick 上的函数刚刚停止工作。

我在按钮的 OnClick 属性上使用的函数将数据从数据库中取出并对其进行处理。虽然我在那里返回 false,但什么也没发生。当它不存在时,页面会不断刷新并且什么都不做。

如果有人有办法阻止回发而不阻止 OnClick 属性上的方法,那就太好了!

HTML

 <asp:Button Text="Edit Ceredntials"  OnClientClick="ShowWindow('#EditDetails', 2500)" OnClick="GetUserData" runat="server" />

【问题讨论】:

  • 你可以使用 HTML 按钮吗?

标签: javascript c# asp.net code-behind


【解决方案1】:

您无法阻止回发并仍然运行OnClick 方法。那是因为OnClick 在服务器上运行,它唯一的执行方式是通过回发。

如果您真正想要完成的是防止页面丢失状态和刷新,您应该改用 AJAX 和兼容的服务器端框架,例如 Web API

<script type="text/javascript">
function loadUserDetails(){
    $.ajax({
        url: 'api/Users/2500',
        type: 'GET'
     })
    .success(function(userDetails){
        $("#FirstName").val(userDetails.FirstName);
        ShowWindow('#EditDetails', 2500);
    });
}
</script>

<asp:Button runat="server" OnClientClick='loadUserDetails()' Text="Edit Credentials" />

【讨论】:

  • 真的不能只停止刷新部分吗?
  • @YuvalRoth 刷新部分是回发。这就是回发,它是将表单提交回服务器。就像我说的,如果你不希望它发生,你需要实现 AJAX。
  • 好吧,AJAX ..... 可悲的是,我是一个初学者,我完全不知道如何使用它。你是说我可以使用 ajax 调用该方法,并在同一个按钮上单击同一个按钮运行 javascript 函数?我需要一个asp按钮吗?你能告诉我一个例子,参考我的代码如何使用它吗?
  • @YuvalRoth 我已经更新了我的答案以显示您的客户端可能是什么样子,尽管它取决于您选择使用的框架以及您需要从服务器获取的数据。这个话题太宽泛了,无法准确地向您展示您需要做的所有事情,但我建议您观看一些有关使用 jQuery AJAX 和 ASP.NET Web API 的视频并查看他们的文档。
  • 我真正需要的是调用两个函数,一个 javascript 函数和一个代码隐藏函数。
猜你喜欢
  • 2010-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-03
  • 2018-07-31
  • 1970-01-01
相关资源
最近更新 更多