これは少し...奇妙です。基本的に、ASP.NET Dynamic Dataを使用して作成しているフォームがあります。これは、いくつかのカスタムフィールドテンプレートを利用します。
独自のカスタムテンプレートを使用してFormViewに別のフィールドを追加しましたが、明確な理由もなく、フォームはそのコントロールを2回ロードしています。さらに悪いことに、テンプレートを初めてロードするとき、行はまだ準備ができておらず、エラーメッセージが表示されます。
Eval()、XPath()、Bind()などのデータバインディングメソッドは、データバインディングコントロールのコンテキストでのみ使用できます
子オブジェクトを取得するために、LinqDataSourceOnSelectedイベントのRow変数にアクセスしています...
ここで、奇妙な部分について説明します。フィールドを少し並べ替えると、問題の原因となっているフィールドが2回ロードされなくなります。
何かご意見は?
編集:Page_Loadが最初のロードで呼び出されることに気づきました(行を使用しようとするとRowが例外をスローしたとき)が、2回目は呼び出されません。それが何か助けになるなら...
今は例外をキャッチして無視するだけで管理していますが、本当の原因がわからないと壊れてしまうのではないかと少し心配しています。
編集2:ページ上の他のコントロールを見つけるためにFindControlを再帰的に使用することで問題を追跡しました。どうやらFindControlは、ページのライフサイクルイベント(少なくともpage_loadまで)を発生させる可能性があります...これは、そのページが「読み込まれる」前に発生するため、動的データの「もの」はまだ準備ができていません。