回發或回調參數無效。在配置中使用 <pages enableEventValidation="true"/> 或在頁面中使用 <%@ Page EnableEventValidation="true" %> 啟用了事件驗證。出於安全目的,此功能驗證回發或回調事件的參數是否來源於最初呈現這些事件的服務器控件。如果數據有效並且是預期的,則使用 ClientScriptManager.RegisterForEventValidation 方法來注冊回發或回調數據以進行驗證
1。問題原因:在pageload 中直接DataBind()的話,當你激發了 GridView的中嵌入控件的事件,這時,就激發了PostBack, 然而你並沒有進行判斷 這時的數據綁定 仍然是pageLoad 的 DateBind()先執行, 可是這時你激發了 更新,刪除等按鈕的事件,這時就會產生 上面的“驗證回發或回調事件的參數是否來源於最初呈現這些事件的服務器控件”的錯誤。
2.解決辦法:把綁定語句寫在!IsPostBack里,
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//綁定數據的語句
}
}
3.IsPostBack:
意思是當前請求是否第一次打開。Page.IsPostBack或者IsPostBack或者this.IsPostBack或者this.Page.IsPostBack,它們都等價。
1)當通過IE的地址欄等方式打開一個URL時是第一次打開, 當通過頁面的提交按鈕或能引起提交的按鈕以POST的方式提交的服務器時,頁面就不再是第一次打開了。(每點擊一次按鈕,都是一次加載)
2)IsPostBack只有在第一次打開的時候是false,其它時候都是true,
3).Net判斷一個Page是否第一次打開的方法:Request.Form.Count>0
4)每次頁面Load的時候,根據需要把每次都要加載的代碼放在IsPostBack中,只需要加載一次的代碼放在if(!IsPostBack)中。
5)每次用戶回傳服務器任何信息的時候,都會引發isPostBack屬性用來判斷此用戶是否曾經做過登陸或者其他事件
6 )
if(!IsPostBack) //只有第一次打開的時候,才會執行里面的代碼
{
Response.Write("第一次提交!");
}
if(IsPostBack)
{
Response.Write("點擊按鈕!");
}