:回發或回調參數無效

今天寫了一個註冊頁面,老是提示“回發或回調參數無效”,鬱悶之極上網查了查資料,發現這篇還不錯,就轉過來與大家一起分享。我的錯誤屬於form裏面嵌套form了,呵呵!

/Test1”應用程序中的服務器錯誤。 回發或回調參數無效。在配置中使用 <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) +367 System.Web.UI.Control.ValidateEvent(String uniqueID, String eventArgument) +83 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +51 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +31 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +32 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +72 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3839 版本信息: Microsoft .NET Framework 版本:2.0.50727.832; ASP.NET 版本:2.0.50727.832  

 

去網上找了好多資料,說是EnableEventValidation=false”就可以了,設置成false後是不再出錯,但是更新按鈕卻無法執行,在程序中設置斷點也無效,根本就不執行Row_Updating方法,有的網友說可能是Form表單嵌套,查找並沒有此現象,還有的說必須要在page_load中判斷IsPostBack可是我判斷了,後來又仔細看了下page_load 哈哈,原來IsPostBack寫成了IsCallBack了,原來是這裏的問題,改成IsPostBack後,正常!

 

 

 

狀況2:回發或回調參數無效。在配置中使用 <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"/>

結果搞定,現在貼到這裏希望對大家能夠有所幫助.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章