爲什麼ASP.NET在<div></div>
內渲染隱藏的__VIEWSTATE
輸入元素?爲什麼__VIEWSTATE隱藏的輸入元素被<div></div>包圍?
回答
他們這樣做是爲了「與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標準足以作出我自己的意見,我只是回答你問。
好的。其實我還是不明白爲什麼一個''本身不會「通過驗證」。但是非常感謝大家的意見。 – 2012-07-22 10:54:54
我與你在一起 - 也許值得一個單獨的問題,從純Web標準和/或CSS的角度來問。 :)順便說一句,你有upvotes涌入,爲此歡呼! (只有第一個來自我)。 – 2012-07-22 11:42:38
在引用的文章結尾處檢查bio:作者是*不*是ASP.NET團隊的一部分。 – Richard 2012-07-22 14:06:09
- 1. 隱藏<canvas>元素
- 2. 爲什麼<packaging>元素包括
- 3. 爲什麼Nullable <>不隱藏GetType?
- 4. 爲什麼我的隱藏<tr>沒有真正隱藏?
- 5. 爲什麼隱藏的表單元素仍然被JAWS讀取?
- 6. 爲什麼要隱藏HTML元素?
- 7. 爲什麼隱藏邊欄元素?
- 8. 爲什麼$ body.children()包含不在<body></body>標記內的元素?
- 9. Firefox中隱藏的輸入元素
- 10. 訪問隱藏的輸入元素
- 11. 爲什麼jQuery UI隱藏隱藏父元素?
- 12. 爲什麼<$>和<*>的輸入順序是>> =?
- 13. 爲什麼<a>元素繼承子元素的大小
- 14. 使用隱藏的輸入值來顯示或隱藏元素
- 15. 隱藏來自「檢查元素」的隱藏輸入字段
- 16. 當使用jquery'.toggle'輸入元素被隱藏?
- 17. 毫秒被ASP.NET MVC隱藏輸入元素截斷
- 18. 什麼是app.config的<client>元素?
- 19. 爲什麼我的UINavigationbar被隱藏?
- 20. 圍繞其他元素包裝<label>有什麼問題嗎?
- 21. <many-to-many>元素中<column>元素的含義是什麼?
- 22. 如何/爲什麼SyncRoot隱藏在隊列<T>上?
- 23. 隱藏元素點擊隱藏元素
- 24. 爲什麼html隱藏輸入值中的多個空格被視爲一個?
- 25. 什麼是根元素<layout>?
- 26. <o:p>元素做什麼?
- 27. 在<select>元素中隱藏選定的值?
- 28. Javascript顯示/隱藏<c:forEach> JSTL的div元素
- 29. 爲什麼空數組在輸出爲XML時被隱藏?
- 30. 我輸入什麼元素?
在此先感謝您的反對意見。如果時間允許,請告訴我爲什麼。 – 2012-07-22 10:06:00
你在問人們猜測:這不符合提問有客觀答案的[SO]方法。查看常見問題。 – Richard 2012-07-22 10:10:36
這是BS。我不是在要求炒作。我正在尋找答案。作爲一名網頁開發人員,我關心網頁上的每一個元素。一個'
'需要空間。如果有足夠的時間,一些知道答案的人會出現在這裏,讓我們知道這個決定背後的原因。如果我們提出正確的問題,有很多人可以向我們提供內部信息。你爲什麼不讓這一段時間? – 2012-07-22 10:14:52