__VIEWSTATE
ASP.NET が内の非表示の入力要素をレンダリングするのはなぜ<div></div>
ですか?
1 に答える
彼らは「より Web 標準に合わせる」ためにそれを行いました。これは、MSDN Magazine の記事Enforce Web Standards For Better Accessibilityからの引用です。
ASP.NET 1.1 にはよく知られた欠陥がいくつかありました。すぐに使えるコントロールは、検証に合格しないコードを生成しました。これは主に、ASP.NET 1.1 で ViewState が処理された方法に起因していました。次のように、ブロック表示内に含まれていない非表示の入力タグを使用していました。
<input type="hidden" name="__VIEWSTATE" value="dDwtMTU1NzQzNDgy..." />
これは、他のいくつかの構文上の問題と相まって、ASP.NET 1.1 が準拠していないという不幸な評判をもたらしました。
ASP.NET 2.0 は、Web 標準の問題の多くに対処しました。たとえば、ASP.NET 2.0 で生成されたページのソースを見ると、ViewState が div タグでラップされ、準拠していることがわかります。<div> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="dDwtMTU1NzQzNDgy..." /> </div>
Microsoft は、ASP.NET 2.0 の目標の 1 つはWeb 標準との整合性を高めることであることを公に明らかにしました。実際、ASP.NET 2.0 を使用すると、準拠した Web サイトとコントロールを作成できます。準拠した Web サイトを構築するための優れたリソースは、Stephen Walther の MSDN® 記事「Building ASP.NET 2.0 Web Sites Using Web Standards」です。この 78 ページの記事では、Web 標準に従ってサイトを構築する方法について詳しく説明しています。
これが本当に Web 標準に沿っているかどうかは、個人的には議論の余地があります。私は自分の意見を述べるほど Web 標準には詳しくないので、あなたの質問に答えるだけです。