4

これには明らかな解決策があるはずですが、私は困惑しています。XHR私たちはほとんどベースのアプリケーションを開発しているので、私たちが使用している間.aspx、典型的なコントロールで行われることはほとんどありません。ただし、いくつかの場所では、レポートなどの期間のいくつかのドロップダウンを使用して、基本的な「このデータをユーザーのスプレッドシートにスローする」ことを行っています。

問題は、asp:DropDownListコントロールを使用すると、コントロールを配置したすべてのページで、送信時にイベント検証エラーがスローされることです。問題を引き起こす漂遊JSがないことを確認するために、アプリケーションのマスターページの残りの部分を共有しないテストページを作成しました(つまり、クライアント側でJSを変更することはまったくありません)。

次の例でを削除するDropDownListと、ボタンのクリックは問題なく発生します。図のようにページが表示された状態でボタンをクリックすると、がスローされますEvent Validation error

ただし、4.0統合アプリプール内の同じマシンで実行されている他のアプリケーションはこの動作を示さないため、構成と関係があると思います。これweb.configはかなり標準的です...httpCompression必死の試みでセクションをオフにしようとしましたが、役に立ちませんでした。

誰かがここからどこから始めるべきかについての提案がありますか?覚えておいてください...クライアント側の変更は行われていません。これはサーバーからブラウザに直接送信され、ASPで生成されたボタンを「クリック」します。

ページディレクティブでイベント検証をオフにするとエラーは解消されますが、解決できる場合は検証をオフにしたくありません。

環境

  • Windows 7 Pro
  • IIS 7.5
  • .NET4.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
  • ddlDays:30
  • butExport:Export
4

1 に答える 1

0

OK、問題を引き起こしている可能性のある構成アイテムを探してプロジェクトを進め始めました。同僚がを使用し、WebControlAdapterそれをすべてに適用しDropDownLists、レンダリング中にを使用しなかったことが判明しRegisterForEventValidationました。

私はアダプターが特に好きではありませんが、人生を続けるために、アダプターをそこに残し、バインドされたアイテムをレンダリングするときにPage.ClientScript.RegisterForEventValidation、それぞれの値を求めています。これにより、アプリケーションで発生するすべての問題が修正されDropDownListました。

提案をありがとう、すべて。

于 2012-06-25T21:21:09.610 に答える