为什么ASP.NET在__VIEWSTATE
中呈现隐藏的<div></div>
输入元素?
答案 0 :(得分:5)
他们这样做是为了“更符合Web标准” - 这里引用了MSDN杂志文章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的目标之一与Web标准更加一致,事实上,ASP.NET 2.0允许您创建兼容的Web站点和控制。构建合规网站的一个很好的资源是Stephen Walther的MSDN®文章“Building ASP.NET 2.0 Web Sites Using Web Standards”。这篇长达78页的文章详细介绍了根据Web标准构建网站的情况。
这是否真的与Web标准更加一致,我个人的讨论是开放性的,我不会对Web标准做出足够的评论,我只是回答你的问题。