0

我有一个 asp.net 网站,它使用 xhtml strict dtd 并在 web.config 中使用 xhtmlConformance 模式。当通过源验证时,我得到零错误,但当通过 URI 验证时,我得到 2 个错误

没有属性“名称”

<form name="aspnetForm" method="post" action="Default.aspx" id="aspnetForm">

我不知道那个 name 属性是从哪里来的。它在输出的 xhtml 中不存在。

第二个错误是因为它认为视图状态没有被包裹在一个 div 中,(即使它是)。

不知道发生了什么。

4

1 回答 1

0

生成属性的原因name是因为name如果您不指定属性,ASP.NET 会自动创建一个属性。

根据MSDN 文章

表单必须具有唯一的名称。如果您不指定一个,则 ASP.NET 会自动分配一个。您可以使用 ID 或 Name 属性设置表单的标识符。如果两者都设置,则 ID 属性优先。但是,重要的是要注意,任何以编程方式使用 Name 属性都会损害页面的 XHTML 兼容性。在 XHTML 中,元素由 ID 而非名称来标识。所以一般来说,你最好依赖 ID 属性。

但是,有一种方法可以删除该name属性:使用XHTML Fixes。(有关详细信息,请参阅此 ASP.NET 论坛主题。)

关于您的第二个<div>错误:您可以从浏览器中复制源代码(不是您编写的源代码)并将其粘贴到那里吗?这将帮助我们找到该错误的问题。

编辑:这个关于将 ASP.NET 验证为 XHTML 1.0 Strict 的问题应该很有用。

于 2011-04-05T20:27:15.517 回答