【问题标题】:Why is the __VIEWSTATE hidden input element surrounded by <div></div>?为什么 __VIEWSTATE 隐藏输入元素被 <div></div> 包围?
【发布时间】:2012-07-22 10:03:13
【问题描述】:

为什么 ASP.NET 会在 &lt;div&gt;&lt;/div&gt; 中呈现隐藏的 __VIEWSTATE 输入元素?

【问题讨论】:

  • 提前感谢您的反对票。如果时间允许,请告诉我原因。
  • 您是在要求人们推测:这不符合Stack Overflow 提出具有客观答案的问题的方法。请参阅常见问题解答。
  • 那是废话。我不是在要求猜测。我正在寻找答案。作为一名网络开发人员,我关心页面上的每一个元素。 &lt;div&gt;&lt;/div&gt; 占用空间。只要有足够的时间,知道答案的人就会出现在这里,让我们知道这个决定背后的原因。如果我们提出正确的问题,SO 上有很多人可以为我们提供内部信息。你为什么不让这一段时间?
  • A &lt;div&gt;&lt;/div&gt; 本质上不会占用空间,除非它包含其他功能,或者您在 CSS 中为其指定了特定尺寸。我猜人们投票结束你的问题的主要原因是,虽然你不是在要求投机,但你不可避免地会得到投机的答案,因为人们不会阅读。 (当然,如果这些答案不提供参考或本身不具有权威性,您总是可以否决这些答案,但是......)
  • 在 SO 上有一些实例,当应用程序/平台的作者和团队成员(“将它们放置在那里的人”)介入回答诸如此类的问题时。根据我对 SO 的经验,这已经发生了两次。这就是为什么如此摇滚……或曾经如此。您是否有兴趣了解 ASP.NET 开发人员对此有何看法?

标签: asp.net .net viewstate


【解决方案1】:

他们这样做是为了“更符合 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® 文章“Building ASP.NET 2.0 Web Sites Using Web Standards”是构建兼容网站的重要资源。这篇 78 页的文章详细介绍了如何根据 Web 标准构建网站。

这是否真的更符合 Web 标准还有待个人讨论

【讨论】:

  • 好的。实际上,我仍然不明白为什么单独站立的&lt;input&gt; 不会“通过验证”。但是非常感谢您的投入。
  • 我同意你的观点 - 也许值得一个单独的问题,从纯 Web 标准和/或 CSS 的角度提出。 :) 顺便说一句,你不知何故得到了很多赞成票,为此欢呼! (只有第一个来自我)。
  • 查看引用文章末尾的简历:作者不是 ASP.NET 团队的成员。
  • @Richard 这是真的,但它仍然是作为官方 MSDN 杂志的一部分发布的,这意味着它通过了 Microsoft 的确认 - 在我看来足够正式。无论如何,我已经编辑了我的答案以反映这一点并防止将来出现混淆。
  • @Agnel Kurian:据我所知&lt;input&gt; 元素不能在没有块容器作为其父级的情况下独立存在(这就是为什么将输入直接放入表单而不将它们嵌套在 div 或段落将无法通过验证)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多