Asp.net

為什麼 __VIEWSTATE 隱藏輸入元素被 <div></div> 包圍?

  • July 22, 2012

為什麼 ASP.NET 會在其中呈現隱藏的__VIEWSTATE輸入元素&lt;div&gt;&lt;/div&gt;

他們這樣做是為了“更符合 Web 標準”——這是 MSDN 雜誌文章Enforce Web Standards For Better Accessibility的引述:

ASP.NET 1.1 中存在一些眾所周知的缺陷。開箱即用的控制項生成的程式碼無法通過驗證。這主要歸因於 ASP.NET 1.1 中處理 ViewState 的方式——使用不包含在塊顯示中的隱藏輸入標記,如下所示:

&lt;input type="hidden" name="__VIEWSTATE" value="dDwtMTU1NzQzNDgy..." /&gt;

這與其他一些語法問題相結合,給 ASP.NET 1.1 帶來了不合規的不幸名聲。

ASP.NET 2.0 解決了許多 Web 標準問題。例如,如果您查看 ASP.NET 2.0 生成的頁面的原始碼,您會看到 ViewState 現在被包裝在 div 標記中,從而使其兼容:

&lt;div&gt;
      &lt;input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="dDwtMTU1NzQzNDgy..." /&gt;
&lt;/div&gt;

Microsoft 已公開表明 ASP.NET 2.0 的目標之一是更符合 Web 標準,事實上,ASP.NET 2.0 允許您創建兼容的網站和控制項。Stephen Walther 的 MSDN® 文章“使用 Web 標準建構 ASP.NET 2.0 網站”是建構兼容網站的重要資源。這篇 78 頁的文章非常詳細地介紹了根據 Web 標準建構站點。

這是否真正與 Web 標準更一致還有待商榷。我對 Web 標準的了解還不夠,無法發表自己的看法,我只是回答你的問題。

引用自:https://stackoverflow.com/questions/11599329