我知道这是一个已在 .NET 4.0+ 中修复的问题,但是目前还不能升级我们的框架。很快,但还没有。目前我使用的是 .NET 3.5。
正如我在许多其他帖子中看到的那样,这是一个非常普遍的问题。似乎没有人真正说出为什么这是一个问题,这就是为什么许多答案似乎并没有抓住实际问题的原因。
使用 asp:Table 控件或 asp:GridView 控件时,生成的标记如下所示:
<asp:Table id="table1" border="0" runat="server"></asp:Table>
Gridview 大致相同,但包含一个“规则”属性,可以通过将 Gridlines 属性设置为“无”来省略该属性。但是,虽然将网格线设置为 none 会处理 rules 属性,但 border="0" 始终保持不变。
现在的问题是:为了使用 W3 验证器验证此代码,必须将边框属性设置为边框 =“”或边框 =“1”。这似乎是一个非常简单的修复,进一步的调查证明恰恰相反。
我试图将值更改为验证器将接受的值:
IE:
table1.Attributes.Add("border", "1"); // This generates <asp:Table id="table1" border="0" border="1" runat="server"></asp:Table>
table1.Attributes.Add("border", null); // This generates <asp:Table id="table1" border="0" border="" runat="server"></asp:Table>
table1.Attributes["border"] = "1"; // This generates <asp:Table id="table1" border="0" border="1" runat="server"></asp:Table>
table1.Attributes["border"] = ""; // This generates <asp:Table id="table1" border="0" border="" runat="server"></asp:Table>
table1.Attributes.Remove("border"); // This generates <asp:Table id="table1" border="0" runat="server"></asp:Table>
这些都没有达到预期的结果。asp:Table 总是生成border="0",我似乎无法修改该值。
有没有人有其他想法,再说一遍,升级框架暂时不是一个选项。我们将在相对不久的将来的某个时候进行升级 - 但不会在此版本投入生产之前。
非常感谢