这必须有一个明显的解决方案,但我很难过。我们正在开发一个应用程序,它主要是 XHR
- 基于,所以当我们使用 .aspx
,用典型的控件做的很少。但是,在某些情况下,我们只是在做基本的“将这些数据放入电子表格中供用户使用”的事情,其中有几个下拉菜单用于报告的时间跨度等。
问题是当我们使用 asp:DropDownList
控件,它会立即导致我们将它们放入的任何页面在提交时抛出事件验证错误。我创建了不共享应用程序母版页的其余部分的测试页面(也就是,根本没有 JS 修改客户端的东西)只是为了确保我们没有一些导致问题的杂散 JS。
如果我删除 DropDownList
在以下示例中,按钮单击发生得很好。如果我点击如图所示的页面按钮,它会抛出 Event Validation error
.
但是,在同一台机器上运行的其他应用程序,在 4.0 集成应用程序池中,没有表现出这种行为,所以我假设它与配置有关。 web.config
很标准...试过转动httpCompression
拼命尝试分段,但无济于事。
有没有人建议从哪里开始?请记住...有无需客户端修改 继续。这直接从服务器到浏览器,然后在 ASP 生成的按钮上“单击”。
在页面指令中关闭事件验证确实消除了错误,但如果我能提供帮助,我宁愿不关闭验证。
环境 :
页 :
<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) :
最佳答案
好的,我开始浏览我的项目,寻找任何可能导致问题的配置项。原来一位同事使用了 WebControlAdapter
并将其应用于所有 DropDownLists
并且在渲染期间,没有使用 RegisterForEventValidation
.
我不是特别喜欢适配器,但为了继续生活,我把它留在那里,在渲染绑定(bind)项目时,我调用 Page.ClientScript.RegisterForEventValidation
对于每个值。这解决了所有有问题的 DropDownList
我们在应用程序中。
谢谢大家的建议。
关于asp.net - 带有 DropDownList 的 ASPX EventValidation 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11146110/