繁体   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