DropDownList的ASPX EventValidation错误

时间:2012-06-21 20:20:43

标签: asp.net webforms

这必须有一个明显的解决方案,但我很难过。我们正在开发一个主要基于XHR的应用程序,因此在我们使用.aspx时,对典型控件的处理很少。但是,在一些地方,我们只是做了基本的“将这些数据投入到用户的电子表格中”,并为报告的时间跨度提供了几个下拉菜单等。

问题是当我们使用asp:DropDownList控件时,它会立即导致我们放入的任何页面在提交时抛出事件验证错误。我已经创建了不共享应用程序主页的其余部分的测试页面(也就是说,客户端没有修改任何JS)只是为了确保我们没有一些混乱的JS导致问题。

如果我删除了以下示例中的DropDownList,则单击按钮就可以了。如果我单击按钮并且页面如图所示,则会抛出Event Validation error

然而,在4.0集成应用程序池中运行在同一台机器上的其他应用程序不会出现此行为,因此我假设它与配置有关。 web.config非常标准......尝试在绝望的尝试中关闭httpCompression部分,但无济于事。

有没有人建议从哪里开始?请记住...... 没有客户端修改正在进行中。这是从服务器直接到浏览器,然后“点击”ASP生成的按钮。

关闭页面指令中的事件验证确实消除了错误,但如果我能帮助它,我宁愿不关闭验证。

环境

  • Windows 7 Pro
  • 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:导出

1 个答案:

答案 0 :(得分:0)

好的,我开始浏览我的项目,寻找可能导致问题的任何可能的配置项。原来使用WebControlAdapter的同事并将其应用于所有DropDownLists,并且在渲染过程中,没有使用RegisterForEventValidation

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

感谢所有建议。