1. 程式人生 > >Dropdownlist在ajax當伺服器控制元件提交時錯誤“回發或回撥引數無效 啟用了事件驗證

Dropdownlist在ajax當伺服器控制元件提交時錯誤“回發或回撥引數無效 啟用了事件驗證

專案中用到下拉列表多級聯動,開始沒用ajax全部伺服器處理,後來這樣重新整理太慢了用ajax(ajax.dll),結果就遇到

錯誤:

回發或回撥引數無效。在配置中使用 <pages enableEventValidation="true"/> 或在頁面中使用 <%@ Page EnableEventValidation="true" %> 啟用了事件驗證。出於安全目的,此功能驗證回發或回撥事件的引數是否來源於最初呈現這些事件的伺服器控制元件。如果資料有效並且是預期的,則使用 ClientScriptManager.RegisterForEventValidation 方法來註冊回發或回撥資料以進行驗證

按錯誤提示加上enableEventValidation="true"錯誤依舊;於是加上enableEventValidation="false"好傢伙,現在不出錯了,但是當其他伺服器控制元件提交返回伺服器的時候根本取不到在客戶端使用ajax給子級別的dropdownlist新增的項,非常無奈,這邊客戶又催的急,我乾脆給弄了個updatepanel和script 把需要多級聯動的幾個list放到updatepanel中 需要提交到伺服器整體處理的塊放在updatepanel外面 這樣總算解決了,不管怎麼說算是湊合能用了;

忙完這個程式之後,心理非常不爽,糾結那個ajax.dll下的其他解決方案今天又搜尋了下,有些朋友的方式是不使用dropdownlist轉而採用html控制元件select,給這個html控制元件加上runat="server"  然後在伺服器端訪問繫結,接收客戶單選擇項的時候採用

Request.Form["控制元件ID"]獲取選擇項的值,綜合起來還是這種解決辦法最優。