实用技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > ASP.NET > 实用技巧 > Page.EnableEventValidation

asp.net Page.EnableEventValidation 属性验证服务器控件的回发和回调事件出现的错误

作者:

Page.EnableEventValidation 属性验证服务器控件的回发和回调事件出现的错误前两天用jQuery做了一个包含DropDownList联动的页面,数据通过Ajax请求得到的。
本以为页面很简单不会出现问题,但运行时出现了如下错误:

Page.EnableEventValidation 属性 参看了一下MSDN,获取或设置一个值,该值指示页面验证回发事件,还是验证回调事件。.NET Framework出于安全考虑需要为服务器端控件的回发和回调事件进行注册,此事件验证机制可消除未经授权的回发请求和回调带来的风险。通过此模型,控件可在呈现期间注册其事件,然后在回发或回调期间验证这些事件。默认情况下,ASP.NET 中的所有事件驱动控件均使用此功能。

第一反应,既然启用了事件验证,那就在页面中禁用验证,将<%@ Page EnableEventValidation="false" %>,问题解决。但是为什么会出现这种问题呢,google一下。

如果页面含有 DropDownList 或 ListBox这样的控件,可能以下原因造成:

在下拉菜单中使用ajax,常见于省市联动菜单,可能是由于在aspx页面赋给了下拉菜单初始Item值,在事件回发时提示该错误,将下拉菜单初始Item值删除,在绑定事件中添加Item项。

原因是 DropDownList 控件的ListItem 的Value 属性 包含汉字.只要将Value 改为英文或数字的就行了.最好在web.config中添加如下语句:
复制代码 代码如下:

<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/>

因为 POSTBACK 如果不采用 UTF-8 编码, JAVASCRIPT 会认为有问题。 只改 requestEncoding="utf-8" 就可以。如有其他建议,请指出。
您可能感兴趣的文章:
阅读全文