Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

回发或回调参数无效

18 views
Skip to first unread message

grass

unread,
Oct 19, 2007, 1:55:41 AM10/19/07
to
回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/ > 或在页面中使用 <%@ Page
EnableEventValidation="true" % >
启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用
ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

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

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

堆栈跟踪:


[ArgumentException: 回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/ >
或在页面中使用 <%@ Page EnableEventValidation="true" % >
启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用
ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。]
System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String
argument) +2127900
System.Web.UI.Control.ValidateEvent(String uniqueID, String
eventArgument) +106
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
+32

System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler
sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain(Boolean
includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102

GridView中:
<ItemStyle HorizontalAlign="Center" / >
<ItemTemplate >
<asp:Button ID="btnEdit" CommandName="btnEdit" runat="server" Text="编辑"
/ >
</ItemTemplate >
</asp:TemplateField >

Page_Load中:
Object obj = Session["UserID"];
if (obj == null ¦ ¦ obj.ToString().Trim().Equals(""))
{
content.InnerHtml = " <a href= '../Login.aspx ' target= '_parent '
>您还没有登录,或已超时 </a >";
string str = " <script language=javascript
>setTimeout(\"window.top.location.replace( '../login.aspx ')\",3000);
</script > ";

Response.Write(str);
return;
}
GridView的RowCommand事件中:
if (e.CommandName.Trim() == "btnEdit")
{
.....
}
当超时时,点GridView中的按钮,触发Page_Load,执行Response.Write(str);return;后,没有执行RowCommand事件,直接出现了那个错误信息.
<%@ Page Language="C#" EnableEventValidation="false"...% >
加入EnableEventValidation="false"后,错误信息:
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
--

Scott

unread,
Oct 22, 2007, 10:30:17 AM10/22/07
to
如果注释掉 Response.Write(str) 不执行的话 是不是就没有这个报错了?

"grass" <gr...@discussions.microsoft.com> wrote in message
news:398D9D0E-B17D-4085...@microsoft.com...

EnableEventValidation="true" @discussions.microsoft.com Page EnableEventValidation="true"

unread,
Jul 13, 2009, 10:14:01 PM7/13/09
to
回发或回调参数无效。在配置中使用 或在页面中使用
启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用
ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
这两天在开发的时候遇到一个这样的问题,

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

目前为止遇到的出现情况有两种:
一是Form嵌套,一个页面只能有一个Form,仔细检查代码就可以解决。
二是在下拉菜单中使用ajax,常见于省市联动菜单,可能是由于在aspx页面赋给了下拉菜单初始Item值,在事件回发时提示该错误,将下拉菜单初始Item值删除,在绑定事件中添加Item项。

后来我自己发现,问题还不是出在那儿.
原因是 DropDownList 控件的ListItem 的Value 属性 包含汉字.只要将Value 改为英文或数字的就行了.
网上还有一种解决办法:把 EnableEventValidation
属性设置为false;但是这样只是没有警告框而已.数据仍然无法传递给服务器,导致SelectedIndex 值一直为零.

最好在web.config中添加如下语句:
<globalization requestEncoding="utf-8" responseEncoding="utf-8"
culture="zh-CN" uiCulture="zh-CN"/>
结果搞定,现在贴到这里希望对大家能够有所帮助.


0 new messages