簡體   English   中英

DropDownList的ASPX EventValidation錯誤

[英]ASPX EventValidation error with DropDownList

這必須有一個明顯的解決方案,但我很難過。 我們正在開發一個主要基於XHR的應用程序,所以當我們使用.aspx ,對典型控件的處理很少。 但是,在一些地方,我們只是做了基本的“將這些數據投入到用戶的電子表格中”,並為報告的時間跨度提供了幾個下拉菜單等。

問題是當我們使用asp:DropDownList控件時,它會立即導致我們放入的任何頁面在提交時拋出事件驗證錯誤。 我已經創建了不共享應用程序主頁面的其余部分的測試頁面(也就是說,客戶端沒有修改任何JS)只是為了確保我們沒有一些混亂的JS導致問題。

如果我在以下示例中刪除了DropDownList ,則單擊按鈕就可以了。 如果我單擊按鈕並且頁面如圖所示,則會拋出Event Validation error

但是 ,在4.0集成應用程序池中運行在同一台計算機上的其他應用程序不會出現此行為,因此我假設它與配置有關。 web.config非常標准......嘗試在絕望的嘗試中關閉httpCompression部分,但無濟於事。

有沒有人建議從哪里開始? 請記住...... 沒有客戶端修改 這是從服務器直接到瀏覽器,然后“點擊”ASP生成的按鈕。

關閉頁面指令中的事件驗證確實消除了錯誤,但如果我能幫助它,我寧願不關閉驗證。

環境

  • Windows 7專業版
  • IIS 7.5
  • .NET 4.0集成應用程序池
  • IE9 / Chrome / Firefox / Safari出錯

頁面

<html>
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DropDownList ID="ddlDays" runat="server">
            <asp:ListItem Text="30 Days" Value="30"></asp:ListItem>
            <asp:ListItem Text="60 Days" Value="60"></asp:ListItem>
            <asp:ListItem Text="90 Days" Value="90"></asp:ListItem>
        </asp:DropDownList>
        <asp:Button ID="butExport" Text="Export" runat="server" />
    </div>
    </form>
</body>
</html>

Codebehind

protected void Page_Load(object sender, EventArgs e) {
    butExport.Click += new EventHandler(butExport_Click);
}

void butExport_Click(object sender, EventArgs e) {
    Syslog("clicked");
}

表單數據(根據Chrome Inspector)

  • __VIEWSTATE:/ wEPDwULLTIwOTUzNjUzOTVkZIiv1cdholWibyWL8h5HASwxedB47NUpctCv8OQc1CWM
  • __EVENTVALIDATION:/ wEWAgL0voCyDQKDgcL6CAX34hdaRiHyNiY1xLIh5Pr6aj5q8h8gGG875vMq1SXF
  • ddlDays:30
  • butExport:出口

好的,我開始瀏覽我的項目,尋找可能導致問題的任何可能的配置項。 原來一個同事使用WebControlAdapter並將其應用於所有DropDownLists並且在Render期間,沒有使用RegisterForEventValidation

我並不特別喜歡適配器,但為了繼續生活,我把它留在那里,在渲染綁定項時,我正在為每個值調用Page.ClientScript.RegisterForEventValidation 這修復了我們在應用程序中遇到的每個有問題的DropDownList

謝謝你們的建議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM