質問: ASP.NET WebForms(.NET2.0)でWebアプリケーションを開発しています。 そこそこ規模の大きなページで、formのsubmit(ポストバック)の発生する操作を素早く何度も繰り返すと、まれにformの最後にあるHiddenFieldコントロール(実体はinput[type=hidden])の値が送信されないことがあります。 「送信されない」については、IEのF12デバッガのネットワークタブで、「要求本文」に確かにそのHiddenFieldのパラメータが含まれていないことを確認しました。 (もちろん通常はパラメータが含まれていることも確認済みです) ここで仮説として、「submitの実行時点でまだレンダリングされていない要素があると、そこに含まれるパラメータは送信されない」という可能性を考えたのですが、これはありえますか? それとも、「submitの実行は、そのform要素全体のレンダリングが完了するまで保留する」ようなHTMLの仕様が定義されていたりするため、ありえないのでしょうか?
回答: あり得ます。 HTMLのソースコードがフォームの途中までしかクライアント側に到達してなくても、その時点でDOMが作られてレンダリングされてユーザは操作ができます。対処方法はいろいろあるかと思います。 * サーバ側のチェックで何とかする * submitイベントを捕まえて全部揃っているかチェックする * デフォルトで送信できないようにしておいて、の直前か直後あたりに