2012-07-22 51 views
8

爲什麼ASP.NET在<div></div>內渲染隱藏的__VIEWSTATE輸入元素?爲什麼__VIEWSTATE隱藏的輸入元素被<div></div>包圍?

+0

在此先感謝您的反對意見。如果時間允許,請告訴我爲什麼。 – 2012-07-22 10:06:00

+0

你在問人們猜測:這不符合提問有客觀答案的[SO]方法。查看常見問題。 – Richard 2012-07-22 10:10:36

+0

這是BS。我不是在要求炒作。我正在尋找答案。作爲一名網頁開發人員,我關心網頁上的每一個元素。一個'

'需要空間。如果有足夠的時間,一些知道答案的人會出現在這裏,讓我們知道這個決定背後的原因。如果我們提出正確的問題,有很多人可以向我們提供內部信息。你爲什麼不讓這一段時間? – 2012-07-22 10:14:52

回答

5

他們這樣做是爲了「與Web標準更一致」 - 這裏是從MSDN雜誌文章Enforce Web Standards For Better Accessibility報價:

有一些衆所周知的缺陷在ASP.NET 1.1。開箱即用的控件產生的代碼不會通過驗證。這在很大程度上歸因於ViewState的ASP.NET中的處理方式1.1使用中不含有塊顯示器內隱藏的輸入標籤,就像這樣:

<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> 

微軟已經衆所周知的那一個ASP.NET 2.0的目標是更符合Web標準,事實上,ASP.NET 2.0允許您創建兼容的Web站點和控件。 Stephen Walther的MSDN®文章「Building ASP.NET 2.0 Web Sites Using Web Standards」是構建合規網站的一個很好的資源。這篇長達78頁的文章詳細介紹了根據Web標準建設網站的情況。

這是否真的與Web標準更加一致是開放的辯論個人我沒有進入Web標準足以作出我自己的意見,我只是回答你問。

+0

好的。其實我還是不明白爲什麼一個''本身不會「通過驗證」。但是非常感謝大家的意見。 – 2012-07-22 10:54:54

+1

我與你在一起 - 也許值得一個單獨的問題,從純Web標準和/或CSS的角度來問。 :)順便說一句,你有upvotes涌入,爲此歡呼! (只有第一個來自我)。 – 2012-07-22 11:42:38

+0

在引用的文章結尾處檢查bio:作者是*不*是ASP.NET團隊的一部分。 – Richard 2012-07-22 14:06:09