前言
最近同事將 Page 的 EnableEventValidation 設定為 true 後,Postback 時,就會出現以下的錯誤。
Invalid postback or callback argument. Event validation is enabled using
發生原因
這個是發生在一個 DropDownList 物件上面,因為同事在 JS 中加入一個「請選擇」的選項,而它的值並不在原來的 DropDownList Datasource 之中。
所以在 Postback 時,基於安全理由(enableEventValidation=”true”),就會噴那個錯誤。
嗯,有以下幾個方式來解決…
解法
在 Server 端加入初始值
將原本在 Client 端加的選項,移到 Server 端去加
1 | var dt = new DataTable(); |
使用 RegisterForEventValidation 來補足
我是在 WebUserControl 之中,所以要透過 this.Page.ClientScript
1 | protected override void Render(System.Web.UI.HtmlTextWriter writer) |
當然,也有人說,將 enableEventValidation 設為 false。 基於安全理由,不建議這樣子做哦!
參考資料
ASP.NET Event Validation and “Invalid Callback Or Postback Argument” : Part II