回发或者回调参数无效
最近更新程序时,总是出现下面的错误提示 :
按照提示在页面的Page指令中设置EnableEventValidation="false" .然后就没有出现了.
搜索出来的结果有两种解释:
一是Form嵌套,一个页面只能有一个Form,仔细检查代码就可以解决。
二是在下拉菜单中使用ajax,常见于省市联动菜单,可能是由于在aspx页面赋给了下拉菜单初始Item值,在事件回发时提示该错误,将下拉菜单初始Item值删除,在绑定事件中添加Item项。
第2种使用Ajax的话,把服务端DropDownList改为select runat=server就解决问题了。
实在是不想每次更新的时候都额外修改 一次,小声的说一次本地测试没有出现哦.Csdn出来的查询得到的结果,记录一下.
在page里增加EnableEventValidation="false"
这个错误的原因大概是因为服务器端控件比如dropdownlist容器内值被改变而引起的验证不通过错误,设置不验证就可以了,这种错误在2.0里才有
EnableEventValidation 属性指示是否应执行事件验证。此属性在 .NET Framework 2.0 版中是新增的。
基本控件将检查此属性,以确定是否应对事件进行验证。派生的控件不会继承此基本控件属性,因此默认情况下不进行事件验证。通过向派生的控件本身添加 EnableEventValidation 属性并将其设置为 true,用户仍可以指示 ASP.NET 对派生的控件执行事件验证。
注意
此事件验证机制可消除未经授权的回发请求和回调带来的风险。它指示 ASP.NET 仅对会在回发请求或回调期间在控件上引发的特定事件进行验证。通过此模型,控件可在呈现期间注册其事件,然后在回发或回调期间验证这些事件。默认情况下,现在 ASP.NET 中的所有事件驱动控件均使用此功能:
如果没有定义 EnableEventValidation 属性,则只有在显式调用 ValidateEvent 时,自定义控件才会参与事件验证。如果处理了事件注册和验证,然后调用 ValidateEvent,则不需要在控件上定义此属性。 如果定义了此属性,但没有注册事件验证,则会出现运行时异常“无效的回发或回调参数”。
问站长,原来服务器上面ASP.NET的版本是2.0的,本地的可是1.1的啊.哎,终于找到问题的根源了,O(∩_∩)O~
这个后来引申出来的问题可多了,很郁闷.