【问题标题】:Disable Button During Postback With Server-Side Validation使用服务器端验证在回发期间禁用按钮
【发布时间】:2014-01-20 21:04:57
【问题描述】:

经过几个线程,无法准确找到这种情况。我的页面是 ASP.NET 4.5,C#。出于(恕我直言)安全原因,我使用“服务器端”验证,并在动态表单上有几个验证组。

我想我们都熟悉在回发期间禁用按钮以防止双击的好处。我已经阅读了很多线程,其中包含以各种方式使用 OnClientClick 的示例。

我希望我的页面是这样的:

1 - 用户点击提交(或任何按钮) 2 - 在适当的验证组上触发服务器端自定义验证 3 - 如果验证通过,禁用客户端按钮并继续回发 4 - 如果验证未通过,则照常显示错误。客户端按钮仍应启用。

3 号似乎是踢球者。这甚至可以通过服务器端验证来实现吗?验证服务器端似乎有问题,回来执行javascript,然后返回回发。如果可能的话,那么我对某些机制感到困惑。具体来说,如何告诉客户端特定的验证组在服务器端通过没问题。不太具体,整个事情,大声笑。

谢谢!

【问题讨论】:

    标签: asp.net validation


    【解决方案1】:

    由于您使用的是 ASP.NET,我假设您也在使用 jQuery(这是默认设置)。

    $('#MyForm').submit(function (event){
      event.preventDefault();
      var form = $(this);
      if (!form.data('submit-lock')){// check if we're waiting on the server's response
        form.data('submit-lock', true);// set the lock since we're about to post to the server
        $.ajax(/*your url and data and whatnot here*/)
          .always(function(){
            form.data('submit-lock', false);// the server responded, unlock
          });
      }
    });
    

    $.ajax() 返回一个 jQuery Deferred 承诺对象。 promise.always(function) 注册一个函数以在 ajax 被解析(成功)或被拒绝(失败)时调用。 更多关于延迟模式的阅读: http://joseoncode.com/2011/09/26/a-walkthrough-jquery-deferred-and-promise/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-15
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      相关资源
      最近更新 更多