javascript - Asp .NET HiddenField 导致无效的回发或回调参数

标签 javascript c# asp.net webforms postback

我正在开发一个带有隐藏字段的 Asp .net Web 表单,该字段应该具有一些值,该隐藏字段的目的是将值从客户端脚本传递到服务器,以便客户端脚本将值放置在该字段中,并且触发回发:

<asp:HiddenField ID="MyHiddenField" ClientIDMode="Static" runat="server" />
<asp:CheckBox ID="dummy" ClientIDMode="Static" AutoPostBack="true" runat="server" Style="display: none" />

该复选框的目的是帮助触发回发:

if ($('#MyHiddenField').val() == '') {
            $('#MyHiddenField').val(SomeValue);
            //do post back:
            $('#dummy').click();
}

服务器将从隐藏字段带来的值存储在Session中,并将其传递给隐藏字段(如果存在):

if (MyHiddenField.Value != "")
    {
        if (Session["c"] == null)
            Session.Add("c", MyHiddenField.Value);
    }
    else if (Session["c"] != null)
        MyHiddenField.Value = Session["c"].ToString();

现在我在回发后随机请求时收到此服务器错误

Invalid postback or callback argument

堆栈跟踪显示隐藏字段是问题所在:

[ArgumentException:无效的回发或回调参数。使用配置或页面中的 <%@ Page EnableEventValidation="true"%> 启用事件验证。出于安全目的,此功能验证回发或回调事件的参数是否源自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。] System.Web.UI.ClientScriptManager.ValidateEvent(字符串 uniqueId,字符串参数)+144 System.Web.UI.Control.ValidateEvent(字符串uniqueID,字符串eventArgument)+108 System.Web.UI.WebControls.HiddenField.LoadPostData(String postDataKey, NameValueCollection postCollection) +36 System.Web.UI.WebControls.HiddenField.System.Web.UI.IPostBackDataHandler.LoadPostData(字符串postDataKey,NameValueCollection postCollection)+13 System.Web.UI.Page.ProcessPostData(NameValueCollection postData, bool 值fBeforeLoad)+303 System.Web.UI.Page.ProcessRequestMain( bool includeStagesBeforeAsyncPoint, bool includeStagesAfterAsyncPoint)+1960

隐藏字段如何导致这个错误的回调参数?为什么我会收到此异常?

最佳答案

而不是调用一些虚拟控件。您可以调用 doPostBack 函数

if ($('#MyHiddenField').val() == '') {
        $('#MyHiddenField').val(SomeValue);
        //do post back:
        __doPostBack();

}

在服务器端页面加载方法中添加以下代码

ClientScript.GetPostBackEventReference(this, string.Empty);

关于javascript - Asp .NET HiddenField 导致无效的回发或回调参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32360994/

相关文章:

php - PHP + javascript 世界中的 dot net + flex 是什么?

c# - 调用 httpClient.GetAsync() 时发送任何数据失败,有时会捕获 TaskCanceledException

c# - 性能扩展方法与实例方法

asp.net - Header Div位置根据Content Div编辑

javascript - 如何使 Math.random 数组中的每个第 9 个元素都是相同的元素?[javascript]

javascript - JS : finding regexp literals in code

c# - Entity Framework Code First 中的关系

c# - 在更优化的 C# 中,如果这是正确的词 :++x or x++?

c# - 随机无效 View 状态错误

javascript - 如何加快我的 ajax 调用并追加到表中?