• asp.net 解决 "回发或回调参数无效" 一些常见解决方案


    一、回发或回调参数无效,出现下图错误,

     常见解决方案:

    1、在页面的<%@ Page Language="C#"  AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"  % 中添加 EnableEventValidation="false" 就可以了。(首先考虑的)

    2、Form嵌套,首先一个页面是可以有多个Form的,但是只能有一个Form 被标记为 runat="server" 并且多个Form不可以嵌套。 那Form 嵌套会不会引起本这个错误呢?我试了几次都没有出现本文的错误。 但如果Form 没加载完毕的时候提交Form则会出现本文的错误,不过这与Form 嵌套无关。

    3、第二种下拉菜单,ajax应用中包含下拉列表框(DropDownList)是出现这个错误频率最高的Case了,那为什么会这样呢?是否像网上所说的那样呢?实则不然,先让我们看下ajax应用中的下拉列表框做了那些事,常见的是省市联动的ajax应用,市的下拉列表框在页面加载后是没有内容的,是根据用户选择的省 异步向服务器请求然后将响应解析之后加载到市的下拉列表框中,然后提交。当提交的时候本文的错误就出现了,那提交的时候做了什么事出现了这个错误呢?原来在页面呈现的时候,DropDownList 的 render 事件,会遍历 DropDownList 每一项的Value 属性,与 DropDownList 的UniqueID 属性 hash 之后做 XOR 并将结果保存到页面中。保存在 id 为 __EVENTVALIDATION 的 hidden中,它看起来可能是这样的 <input type="hidden" id="__EVENTVALIDATION" name= "__EVENTVALIDATION" value="/wEWBQKGg9abDQKd9sHMBgKc9s........" /> 当我们选择省市的DropDownList 并提交时,在 DropDownList 的 LoadPostData 事件中会验证提交的内容与 id 为 __EVENTVALIDATION 的 hidden 的Value ,因为之前市的DropDownList 并没有项,可是提交的时候 我们给它加了若干项而事件验证机制不知道,它会判断出提交的数据不是预期的是未经授权的、是无效的,也就会报出本文的错误了。那如何解决也就明确了,只要我们告诉事件验证机制那些数据是有效的问题也就迎刃而解了。

    4、DropDownList控件异步后台获取数据时,请将DropDownList控件属性AutoPostBack的属性值设置为true即可。

    5、原因是 DropDownList 控件的ListItem 的Value 属性 包含汉字.只要将Value 改为英文或数字的就行了.最好在web.config中添加如下语句:
    <globalization  requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN"  uiCulture="zh-CN"/因为 POSTBACK 如果不采用 UTF-8 编码, JAVASCRIPT 会认为有问题。

  • 相关阅读:
    5- MySQL数据库SELECT查询操作
    4- MySQL创建表以及增删改查
    3- MySQL数据类型
    2- MySQL客户端工具Workbench的使用及数据库的操作
    4-1 Postman脚本的应用
    ImportError: cannot import name HTTPSHandler
    python zlib模块缺失报错:RuntimeError: Compression requires the (missing) zlib module
    make 命令出现:"make:*** No targets specified and no makefile found.Stop."
    用Wget下载的文件在哪里可以找到。。
    Linux wget命令详解
  • 原文地址:https://www.cnblogs.com/PingleDay/p/4175138.html
Copyright © 2020-2023  润新知