这必须有一个明显的解决方案,但我很难过。我们正在开发一个主要XHR
基于 - 的应用程序,所以当我们使用.aspx
时,很少使用典型的控件。但是,在某些情况下,我们只是在做基本的“将这些数据放入电子表格中供用户使用”的事情,其中有几个下拉菜单用于报告的时间跨度等。
问题是当我们使用asp:DropDownList
控件时,它会立即导致我们放入它们的任何页面在提交时抛出事件验证错误。我创建了不共享应用程序母版页的其余部分的测试页面(也就是,根本没有 JS 修改客户端的东西)只是为了确保我们没有一些杂散的 JS 导致问题。
如果我在以下示例中删除了DropDownList
,按钮单击就会发生。如果我点击页面如图所示的按钮,它会抛出Event Validation error
.
但是,在同一台机器上运行的其他应用程序,在 4.0 集成应用程序池中,没有表现出这种行为,所以我假设它与配置有关。这web.config
是相当标准的......试图httpCompression
在绝望的尝试中关闭部分,但无济于事。
有没有人建议从哪里开始?请记住...没有客户端修改正在进行。这直接从服务器到浏览器,然后在 ASP 生成的按钮上“单击”。
在页面指令中关闭事件验证确实消除了错误,但如果我能提供帮助,我宁愿不关闭验证。
环境:
- 视窗 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
- ddl天数:30
- 但是导出:导出