2009-03-04 78 views
0

我使用C#打開一個彈出窗口,並允許用戶從中選擇一些值並將值發送回服務器。但是,當我關閉彈出窗口時,出現以下錯誤:ASP.NET Postback錯誤


無效的回發或回調參數。使用配置中的<pagesenableEventValidation="true"/>或頁面中的<%@ Page EnableEventValidation="true" %>可啓用事件驗證。爲了安全起見,此功能驗證回發或回調事件的參數來自最初呈現它們的服務器控件。如果數據有效且預期,請使用ClientScriptManager.RegisterForEventValidation方法爲註冊回發或回調數據進行驗證。 「


有誰知道什麼可能導致此?

+1

需要更好地描述頁面實際正在做什麼,可能需要一些代碼 – AnthonyWJones 2009-03-04 21:00:46

回答

0

最常見的原因這個錯誤出現(對我來說)是當你勢在必行創建控件自己(在後臺代碼),而不是聲明地在.aspx文件中,特別是在初始頁面渲染過程中創建一組控件,並且在回發期間,頁面創建邏輯創建一個(可能略有不同的)一組控件。在每次頁面呈現時創建並添加到樹中的相同位置,無論是否回發。否則可能導致此錯誤。

此錯誤也可能有其他原因,但這是我見過它的唯一場景。

0

關閉事件驗證。只要您自己檢查表單值並確保您不接受無效值,就完全沒有必要。

1

將數值發回到包含HTML標記或其他受限字符的表單時,我看到此錯誤。默認情況下,出於安全原因,.NET會阻止此操作

檢查您在關閉表單時發回給您的頁面的值,以查看您是否在其中一個輸入值中發送任何標記。

如果您絕對必須發送此類型的數據,請在ASPX頁面上禁用EnableEventValidation屬性,並確保應用驗證以防止注入。

0

This event validation mechanism reduces the risk of unauthorized postback requests and callbacks. With this model, a control registers its events during rendering and then validates the events during the post-back or callback handling. All event-driven controls in ASP.NET use this feature by default.

您可以關閉PAGE或web.config中的EnableEventValidation,但這被認爲是一種安全風險。

你可以嘗試:

除非需要還可以確保綁定中完成的 - Page.IsPostBack

0

如果您的彈出(或別的)被注入什麼成不回發的形式,那麼!可能是錯誤的根源。

我有這個錯誤,當使用手動有線jQuery的ajax調用來更新級聯選擇列表(比aspnet ajax快得多),被放入第二選擇(這是runat =服務器)的新值導致事件驗證失敗。您可以通過腳本管理器(我覺得有點痛苦)來註冊它,或者禁用事件驗證,但這確實意味着要更加努力並自己驗證它。