1. 程式人生 > >Invalid postback or callback argument(回發或回撥引數無效)

Invalid postback or callback argument(回發或回撥引數無效)

出現錯誤的揭示如下:

Invalid postback or callback argument.  Event validation is enabled using <pages enableEventValidation="true"/> 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.

在網上看了一下,沒有一個完整的解決方法。

這個問題搞了我一天的時間,終於搞定了。一個字“爽”。

解決方法:

    在.aspx頁面中的<%@ Page …… %>語句中加上屬性EnableEventValidation="false"

然後在頁面裡面有一個DropDownList控制元件是動態填充的,點選按鈕後取不到的值

解決方法:

protected void Page_Load(object sender, EventArgs e){}前面寫上如下:

    protected override void Render(HtmlTextWriter writer)
        {

            ClientScript.RegisterForEventValidation(this.ddlType.UniqueID, "argument");//ddlType為DropDownList控制元件的名稱
            base.Render(writer);
        }

    然後在Button的事件裡面取DropDownList的SelectedValue值的方法為:Request.Form[this.ddlType.UniqueID.ToString()]

注意:從Request.Form[this.ddlType.UniqueID.ToString()]得到解決的值如果是中文,有亂碼。所以最好是傳值

    同理,把伺服器控制元件轉換為客戶端可以識別的控制元件ID為:ddlType.UniqueID