asp.net - 带有 DropDownList 的 ASPX EventValidation 错误

标签 asp.net webforms

这必须有一个明显的解决方案,但我很难过。我们正在开发一个应用程序,它主要是 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>
    

    代码隐藏 :
    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
  • __事件验证:/wEWAgL0voCyDQKDgcL6CAX34hdaRiHyNiY1xLIh5Pr6aj5q8h8gGG875vMq1SXF
  • ddlDays:30
  • 但是导出:导出
  • 最佳答案

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

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

    谢谢大家的建议。

    关于asp.net - 带有 DropDownList 的 ASPX EventValidation 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11146110/

    相关文章:

    asp.net - signalR 第一个演示项目

    asp.net - 最新的 Microsoft Chart 和 ASP.NET MVC

    c# - 在 DataPager 中获取事件号码页

    asp.net - AppHarbor: 目录 '/App_GlobalResources/' 不允许,因为应用程序是预编译的

    asp.net - WebForm 项目到 MVC - 缺少上下文菜单项

    c# - 使用 c# for framework 4.0 在 asp.net webform 中进行 URL 路由/重写

    asp.net - Bundle.config 可以包含 ScriptBundles 吗?

    asp.net - jquery ajax调用后如何重新加载asp.net GridView?

    c# - 如何从 JavaScript 调用方法背后的代码

    c# - ASP.NET 中的 SQL Server 数据缓存