2017年5月31日 星期三

【ASP.NET Webform】Invalid postback or callback argument. Event validation is enabled using in configuration...

在自己用 JQuery Ajax 去改 DropDownList 內容後,postback 就噴
Invalid postback or callback argument. Event validation is enabled using in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.

看起來是內建有防止 cracker XSS 或 inject 東西的機制把我在 Client 端的改動視為異常動作,想說這個應該會有針對單一元件之類的作設定或一些很好的方法吧?

結果看到這篇,心涼了一半...

這篇最下方保哥的回覆,個人覺得算一個不錯的方法,實作參考

但是,最佳解還是要留給 SO 這篇
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
    }
}
在空的 Page_Load 裡面加上空的 if(!IsPostBack){},之後就怪事神奇消失,憑良心講我還真不知道這個原理是什麼...,我一開始甚至沒試這個解,因為感覺跟問題太不相關了,有興趣的人可以去 SO 看解釋,我看了半天還是不懂加這個到底是為什麼可以修好。

沒有留言:

張貼留言