【问题标题】:Firing Postback from Javascript从 Javascript 触发回发
【发布时间】:2014-03-26 20:25:30
【问题描述】:

好的,我知道这个问题被问了很多,我在网上找到了很多关于这个的信息。不幸的是,这些似乎都不适合我。

基本上,我运行了一些 JavaScript 来响应用户事件。 JavaScript 获取一些信息(一个 int),然后我想将其返回到服务器。

第一种方法是使用Page.ClientScript.GetPostBackEventReference 来获得对__DoPostBack() 的有效调用,如here 所述。

我使用此方法从按钮触发回发。这似乎工作,除了我得到错误:

回发或回调参数无效。使用配置或页面中的 启用事件验证。出于安全目的,此功能验证回发或回调事件的参数是否源自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用 ClientScriptManager.RegisterForEventValidation 方法注册回发或回调数据以进行验证。

接下来,我尝试使用 HiddenField 的 ValueChanged 事件处理程序。我编写了我的处理程序,但更改隐藏字段的值不会触发事件。仍然需要以某种方式触发某种形式的回发。

我真的不明白为什么我会遇到这么多麻烦。有没有更直接的方式来做我需要的事情?

【问题讨论】:

    标签: javascript jquery asp.net webforms postback


    【解决方案1】:

    哇,没有答案。谁会想到这如此晦涩难懂。

    无论如何,这对我有用。我刚刚在我的表单中添加了一个 ASP.NET HiddenField,并为 ValueChanged 事件提供了服务器端处理程序。

    <asp:HiddenField ID="MyHidden" runat="server" OnValueChanged="MyHidden_ValueChanged" />
    

    然后,为了响应用户操作,我的 JavaScript 设置这个隐藏字段的值。

    $('#<%= MyHidden.ClientID %>').val(myData);
    

    最后,为了触发隐藏字段的ValueChanged 事件,我使用以下代码发起回发。 GetPostBackEventReference() 返回一个 JavaScript 语句,它将替换服务器端标记。

    <%= Page.ClientScript.GetPostBackEventReference(MyHidden, String.Empty) %>;
    

    而且它似乎工作得很好。回发发生,我的ValueChanged 处理程序被调用。该处理程序确定我的隐藏字段的值并执行所需的操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      • 2014-05-24
      • 1970-01-01
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多