当前位置: 代码迷 >> ASP.NET >> 有史以来最奇怪的事情! 这也太离奇了。该怎么处理
  详细解决方案

有史以来最奇怪的事情! 这也太离奇了。该怎么处理

热度:1005   发布时间:2013-02-25 00:00:00.0
有史以来最奇怪的事情!! 这也太离奇了。。
我的一个asp.net网站....   目录如下

+   跟目录
    +manage目录
        ---article_add.aspx
    +worker目录
    default.aspx
    web.config

是这样的。。。本来网站一切正常。。我今天在manage目录里为article_add.aspx做了一个无刷新的级连dropdownlist,测试的时候提示:

=========================
回发或回调参数无效。在配置中使用   <pages   enableEventValidation= "true "/>   或在页面中使用   <%@   Page   EnableEventValidation= "true "   %>   启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用   ClientScriptManager.RegisterForEventValidation   方法来注册回发或回调数据以进行验证。
=============================

我查了网上的资料就把   enableEventValidation   设置为false....这样manage目录正常了,并且article_add.aspx里面的验证控件正常。。

但是奇怪的是网站根目录的所有提交按钮都不正常了。。点提交的时候就会出现:

=========================
回发或回调参数无效。在配置中使用   <pages   enableEventValidation= "true "/>   或在页面中使用   <%@   Page   EnableEventValidation= "true "   %>   启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用   ClientScriptManager.RegisterForEventValidation   方法来注册回发或回调数据以进行验证。
=============================

的错误,并且验证控件不起作用。。   我把根目录页面的enableEventValidation   设置为false后,虽然提交按妞正常了。。但是验证控件还是不能用。。。。

而且worker目录的正常。。。奇怪不?   这个是为什么?搞不明白


------解决方案--------------------------------------------------------
重新注册下iis呢
------解决方案--------------------------------------------------------
反过来弄. 保持根目录与以前不动,在manager目录要出错的页面加 <pages enableEventValidation= "true "/>
------解决方案--------------------------------------------------------
最好在web.config中添加如下语句:
<globalization requestEncoding= "utf-8 " responseEncoding= "utf-8 " culture= "zh-CN " uiCulture= "zh-CN "/>
结果搞定,现在贴到这里希望对大家能够有所帮助.

------解决方案--------------------------------------------------------
问题出在你的dropdownlist里中文的选项
------解决方案--------------------------------------------------------
MARK
------解决方案--------------------------------------------------------
没遇到过这情况,up
------解决方案--------------------------------------------------------
我今天在manage目录里为article_add.aspx做了一个无刷新的级连dropdownlist
========
你的代码有问题!!!

对服务器控件使用 js 事件或者调用了 asp.net 内部的回发/回调函数,如 __doPostBack ,最
好使用 asp.net 内置的 API 来注册脚本以及相关状态,如

// 1.x
Page.GetClientScriptPostBackEventReference(...
// 2.0
Page.ClientScript.GetClientScriptPostBackEventReference(...

否则 asp.net 监测到会认为是非法 js ,比如可能是攻击型的js


假如你确定,脚本使用无误,可以禁用此检测,

单页禁用
<%@ Page EnableEventValidation= "false " %>

整站禁用 webconfig 中

<pages enableEventValidation= "false " />


当然,这样就存在潜在危险

------解决方案--------------------------------------------------------
既然是是无刷新了, 还用 DropDownList 做什么?

直接使用 select, 效率更高,

且能消除你的问题了
------解决方案--------------------------------------------------------
混乱带来麻烦
------解决方案--------------------------------------------------------
确实很奇怪,既然用无刷新了还用服务器控件...
------解决方案--------------------------------------------------------
up
------解决方案--------------------------------------------------------
有点意思 MS 的东东 重启很有用的 缓存 搞的