服务器端表单标签的W3C验证

8

我在w3.org上检查了我的网站html验证,得到了以下错误:

表单元素的属性action的值无效:必须为非空。

但是我的表单是asp.net服务器端表单,我无法设置action属性。

我该如何解决这个错误?

3个回答

11

这是一篇旧文章,但为了将来在ASP.NET中避免空白操作属性,可以执行以下操作:

<form action="#" runat="server">

这将与W3C验证,并且不需要您进行任何特殊编码来检测当前所在页面的URL。

实际上,这是有问题的。如果您尝试使用action="#"解决方案进行提交,您将收到一个HTTP动词服务器端错误。 - abegosum
@abegosum,我已经在ASP.NET中使用这个解决方案有一段时间了,没有你报告的问题,你知道为什么会出现这种情况吗? - user152949
可能是IIS版本或设置的问题(我怀疑这是一种安全设置,以防止某些类型的脚本注入)?你的页面是否有任何后台请求? - abegosum
@abegosum 是的,后台请求也可以。也许你应该列出你的设置,我可以尝试重新创建你的错误? - user152949

7
form1.Action = Request.Url.AbsoluteUri;

这对我很有效


2
省略属性action。根据HTML5草案,它不是必需的,但如果存在,则其值必须为非空。参考:WHATWG HTML5草案,关于action属性的描述

1
在ASP.NET中,如果你编写了<form runat="server"> 你不能省略action属性,因为它会被渲染成<form action="">;这就是它的工作方式。 请查看我的回复以获取更好的解决方案。 - user152949
2
每次我学习新的ASP.NET知识,就会更加讨厌它。 - Quentin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接