这必须有一个明显的解决方案,但我很难过。我们正在开发一个主要基于 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>
    

    代码隐藏 :
    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 并且在渲染期间没有使用 RegisterForEventValidation

    我不是特别喜欢适配器,但为了继续生活,我把它留在那里,在渲染绑定(bind)项目时,我为每个值调用 Page.ClientScript.RegisterForEventValidation。这已经修复了我们在应用程序中所有有问题的 DropDownList

    谢谢大家的建议。

    关于asp.net - DropDownList 的 ASPX EventValidation 错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11146110/

    10-15 11:00