8

为什么 ASP.NET 会在其中呈现隐藏的__VIEWSTATE输入元素<div></div>

4

1 回答 1

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 允许您创建兼容的网站和控件。Stephen Walther 的 MSDN® 文章“使用 Web 标准构建 ASP.NET 2.0 网站”是构建兼容网站的重要资源。这篇 78 页的文章非常详细地介绍了根据 Web 标准构建站点。

这是否真正与 Web 标准更一致还有待商榷。我对 Web 标准的了解还不够,无法发表自己的看法,我只是回答你的问题。

于 2012-07-22T10:38:18.880 回答