これは .NET 4.0+ で修正された問題であることは理解していますが、フレームワークをアップグレードすることは、現時点ではオプションではありません。もうすぐですが、まだです。当分の間、.NET 3.5 を使用しています。
他の多くの投稿で見たように、これは非常に一般的な問題です。それが問題である理由を誰も実際に言っていないようです。そのため、多くの回答が実際の問題を把握していないようです。
asp:Table コントロールまたは asp:GridView コントロールを使用すると、生成されるマークアップは次のようになります。
<asp:Table id="table1" border="0" runat="server"></asp:Table>
Gridview はほとんど同じですが、Gridlines プロパティを "none" に設定することで省略できる 'rules' 属性が含まれています。ただし、グリッド線を none に設定すると rules 属性が処理されますが、border="0" は常に残ります。
ここでの問題: W3 バリデーターを使用してこのコードを検証するには、border プロパティを border="" または border="1" に設定する必要があります。これは非常に単純な修正のように思えますが、さらに調査するとまったく逆であることがわかります。
バリデーターが受け入れる値に値を変更しようとしました:
すなわち:
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" を生成し、値を変更できないようです。
誰か他のアイデアはありますか?また、フレームワークをアップグレードすることは当面の選択肢ではありません。比較的近い将来のある時点でアップグレードする予定ですが、このバージョンが本番環境に移行する前ではありません.
どうもありがとう