asp.net c# asp:TextBox,如何去掉column和rows属性?

asp.net c# asp:TextBox, How to remove the cols and rows attributes?

我在页面上有一个 asp:TextBox 控件。我将它设置为 TextMode="MultiLine",我没有设置行数或列数。我在 CSS 中为控件设置宽度和高度。

asp.net 仍在添加,我假设是呈现控件上的默认行和列属性。 cols="20" 和 rows="2" 这在任何理智的浏览器中都不是问题,但在 IE 中,CSS 高度被忽略,只显示 2 行空间。

如何防止这些属性出现在呈现的控件上?

编辑:

这仅在兼容模式下的 IE8、IE7 和 IE6 中存在。我不担心 IE6,但 IE7 需要工作。


不要使用asp:Textbox,而是使用<textarea />并在其中放入runat="server",如果不这样做,则不会添加cols和rows属性。

1
<textarea id="txtContent" runat="server"></textarea>

外部 CSS(不要混合使用内联和外部 CSS):

1
2
3
4
5
6
7
.myTextBox
{
    height: 40px;
    width: 220px;
}

</asp:TextBox>

请注意,100% 的高度将为您提供默认的单行高度 - 基本上没有效果。如果你想要多行,那么只需在 CSS 中使用像素。

生成的标记:

1
<input name="TextBox1" type="text" id="TextBox1" class="myTextBox" />

CSS 高度设置可以很好地提供双排效果。

这里最好的方法是以最基本的形式对其进行测试,并在不同的浏览器中逐步增强它。

更新

ASP.NET 使用 CSS 值而不是设置行和列等价物。但是,它仍然在 FF 3.6 和 IE8 中正常工作(在兼容模式下)。为了抑制这些属性,我认为您可能必须创建一个从 TextBox 继承的自定义控件并调整渲染方法。不确定,但您也可以尝试使用 JS 删除这些属性。

多行文本框实际上是一个 HTML