【问题标题】:Ignore/disable usercontrol postback if javascript is enabled如果启用了 javascript,则忽略/禁用用户控件回发
【发布时间】:2010-10-20 14:11:39
【问题描述】:

为了解决这个问题,我到处搜索。希望这里有人能解释一下!!

我创建了一个使用 .NET Web 控件的用户控件,但我想通过避免完全回发来创建更流畅的用户体验,因此我编写了一些 JQUERY 来捕获客户端上的点击事件,并以这种方式进行处理而无需返回到服务器。

        $("#tblLedgerEntries :checkbox").click(function () {
            var value1 = $(this).closest("tr").find("td.invoiceAmount").html();
            var value2 = $('#<%=hdnTotalToPay.ClientID%>').html();
            CalculateTotalPayable(value1, value2, $(this).attr("checked"));
        });

一切都好。现在有人在禁用 javascript 的情况下访问我的网站。假设我可以检测到是否启用了 javascript。在这种情况下,我需要在服务器上的客户端上进行计算,这意味着我需要触发回发......

我该怎么做.....我只想在禁用 javascript 时触发完整的回发。如果启用了 javascript,我想使用客户端脚本。如果这适用于复选框(每次用户单击行复选框时,UI 都会重新计算应付金额),我可以看到触发回发的唯一方法是使用 AutoPostBack=True ....但是无论如何这总是会进行回发客户端脚本.....啊啊啊。

任何人都知道该怎么做......还是我从错误的角度接近这个?!??

亲切的问候

理查德

【问题讨论】:

    标签: javascript asp.net jquery postback client-side


    【解决方案1】:

    AutoPostBack = true 是通过 javascript 实现的。因此,如果用户禁用了 javascript,那也不起作用。禁用 javascript 时获取 PostBack 的唯一方法是使用用户控件,该控件作为 &lt;input type="submit" /&gt; 呈现给客户端,因为这会导致浏览器发布表单。任何呈现javascript:__doPostBack() 链接的服务器控件都将不起作用。

    【讨论】:

      【解决方案2】:

      我猜你可能可以使用 UpdatePanel 来做到这一点:

      http://msdn.microsoft.com/es-es/library/bb386454%28VS.90%29.aspx

      http://ajax.net-tutorials.com/controls/updatepanel-control/

      当然,逻辑将在服务器中,使用 ajax 或回发,而不是在客户端中。

      【讨论】:

        【解决方案3】:
        $("#btnSave").attr('disabled', true); 
        

        【讨论】:

          猜你喜欢
          • 2020-08-31
          • 2021-10-15
          • 1970-01-01
          • 1970-01-01
          • 2015-04-02
          • 1970-01-01
          • 2013-05-29
          • 2012-03-30
          • 2023-03-23
          相关资源
          最近更新 更多