这肯定有一个明显的解决办法,但我很困惑。我们正在开发一个应用程序,主要是XHR-based,所以在使用.aspx时,很少使用典型的控件。然而,在一些地方,我们只是做一些基本的“将这些数据扔到用户的电子表格中”的事情,还有几个下拉列表,用于报告的时间范围,等等。
问题是,当我们使用asp:DropDownList控件时,它会立即导致将它们放入的任何页面在提交时抛出事件验证错误。我创建了测试页面,这些页面不共享应用程序的其他母版页面(也就是根本没有JS修改客户端),只是为了确保我们没有导致问题的偏离JS。
如果在下面的示例中删除DropDownList,则按钮单击就会很好。如果我按一下按钮,页面如图所示,它就会抛出Event Validation error。
但是,在同一台机器上运行的其他应用程序(在4.0集成应用程序池中)没有显示这种行为,所以我假设它与配置有关。web.config是非常漂亮的standard...tried,在绝望的尝试中关闭了httpCompression部分,但没有效果。
有人对从这里开始有什么建议吗?请记住..。没有客户端修改,正在进行。这是直接从服务器到浏览器,然后点击ASP生成的按钮。
在页面指令中关闭事件验证确实可以消除错误,但是如果我能帮忙的话,我不想关闭验证。
环境
集成app-pool
中
页面
<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检查器)
发布于 2012-06-25 21:21:09
好的,我开始检查我的项目,寻找可能导致问题的任何可能的配置项。结果发现,一位同事使用了WebControlAdapter,并将其应用于所有DropDownLists,而在呈现过程中,没有使用RegisterForEventValidation。
我并不特别喜欢适配器,但为了继续生活,我把它留在了那里,在呈现绑定项时,我为每个值调用了Page.ClientScript.RegisterForEventValidation。这修复了应用程序中的每一个有问题的DropDownList。
谢谢大家的建议。
https://stackoverflow.com/questions/11146110
复制相似问题