2014年2月8日 星期六

ASP.Net 無效的回傳或回呼引數

在開發ASP.Net Web時,會遇一個錯誤訊息是:「無效的回傳或回呼引數。已在組態中使用 <pages enableEventValidation="true"/> 或在網頁中使用 <%@ Page EnableEventValidation="true" %> 啟用事件驗證。基於安全性理由,這項功能驗證回傳或回呼引數是來自原本呈現它們的伺服器控制項。如果資料為有效並且是必需的,請使用 ClientScriptManager.RegisterForEventValidation 方法註冊回傳或回呼資料,以進行驗證。」

這樣的問題是在程式中使用了 GridView,
每次執行 Page_Load 事件時都會 Bind 資料到這個 GridView,
遇到 PostBack 時就會觸發上述的錯誤。

解決這個錯誤訊息的辦法是,在 Page_Load 事件中使用PostBack檢查是否為ture,
若否,才將資料綁到 GridView 上頭。例如以下這樣:

protected void Page_Load(object sender, EventArgs e)
{
    // 取得 GridView 內容
    if (!IsPostBack)
    {
        data_bind();    // 自訂的 GridView databind函式
    }
}

或者是只要在.aspx 網頁第一句最後面加上 EnableEventValidation="false" 就行了。

< %@ Page Language="C#" AutoEventWireup="true" CodeFile="Page.aspx.cs" Inherits="Page" EnableEventValidation="false"%>


-雲遊山水為知已逍遙一生而忘齡- 電腦神手

沒有留言:

張貼留言