0

この質問が何度も出てきたことは理解していますが、私が見つけた投稿のどれもこの問題を解決するのに役立ちませんでした.

時々、タイトルにエラーが表示されます。Multiple controls with the same ID 'ctl35' were found. FindControl requires that controls have unique IDs.これは常に発生するわけではなく、数回更新するだけでエラーが解消されるようです。

私のページには基本的にUpdatePaneland があり、ユーザーは注文の一部に対応するデータを入力することを意図しています。複数のパーツが存在する可能性があるため、新しいPanelを作成し、入力フィールドを作成して にPanel追加し、次に に追加するボタンがありますUpdatePanel。ユーザーはこのボタンを複数回クリックして、複数のエントリを追加できますPanel。これを達成するために、ユーザーが新しい入力フィールドを必要とするたびList<Panel>に新しいものを追加するを維持します。ページが (追加ボタンから) ポストバックを受け取ると、List を繰り返し処理し、それぞれを にPanel再追加します。これにより、既存のエントリ パネルが保持されます。PanelUpdatePanel

これらのフィールドは動的に更新されるため、データを取得するフィールドの ID を一意で互いに区別できるものに設定するようにしました。ただし、前述のように、ASP.NET で自動生成された ID (ctl35この場合) を使用して複数のコントロールを見つけるという問題に遭遇することがあります。ctl35このエラーを受け取った後、Chrome でレンダリングされた HTML を見ると、IDを持つコントロールがまったくありません。さらに、レンダリングされた HTML には、ID が自動生成された「ctlXX」で終わる要素さえ含まれていません。このため、名前の競合の問題が発生する可能性がある場所を理解できません。ほとんどの場合、このエラーが発生しないという事実も、ここでの混乱の主な原因です。

この問題が何であるか、またはこれをトラブルシューティングするために何をする必要があるかについてのアイデアはありますか?

4

1 に答える 1

1

データを取得する必要があるものだけでなく、動的に作成されたすべてのコントロールに ID を割り当てていることを確認してください。追加されたコントロールでデフォルト ID を使用すると、これが発生するのを見てきました。

于 2012-07-17T03:35:31.903 に答える