我希望是这样的:
<asp:CheckBox ID="CheckBox1" runat="server" CssClass="myClass" />
<asp:RadioButton ID="RadioButton1" runat="server" CssClass="myClass" />
<asp:TextBox ID="TextBox1" runat="server" CssClass="myClass" />
...to像这样呈现(为了简单起见,去掉了一些属性)
<input id="CheckBox1" type="checkbox" class="myClass" />
<input id="RadioButton1" type="radio" class="myClass" />
<input id="TextBox1" type="text" class="myClass" />
...when实际上,RadioButton
和CheckBox
用span
标记包装,并在那里应用CSS类。
<span class="myClass"><input id="CheckBox1" type="checkbox" /></span>
<span class="myClass"><input id="RadioButton1" type="radio" /></span>
<input type="text" id="TextBox1" class="myClass" />
这是有原因的吗?有没有办法避免呢?这使得jQuery选择器看起来很难看,因为你不能用以下命令捕获所有的选择器:
$("input.myClass")
当然,它只是要:
$("input.myClass, span.myClass input")
这是丑陋的...but。我可以编写自己的选择器,但仍然没有它应有的优雅。
发布于 2009-06-15 18:09:59
System.Web.UI.WebControls
命名空间中的Web控件在不同的浏览器中呈现方式可能不同。你不能指望他们总是渲染相同的元素。他们可以添加他们认为需要的任何东西,以使其在特定的浏览器中工作。
如果要控制控件如何呈现为html,则应改用System.Web.UI.HtmlControls
命名空间中的控件。这就是:
<input type="checkbox" id="CheckBox1" runat="server" class="myClass" />
<input type="radio" name="RadioButton1" runat="server" class="myClass" />
<input type="text" id="TextBox1" runat="server" class="myClass" />
它们将呈现为相应的html元素,没有添加额外的元素。当然,这意味着您必须为浏览器兼容性负责,因为控件没有。此外,这些控件不具备WebControls
命名空间中控件的所有功能。
发布于 2009-11-11 05:56:20
这也让我抓狂,直到我找到了inputAttributes属性。
例如,下面是如何在checkbox控件上直接添加一个类,而不是无意义的span:
myCheckBoxControl.InputAttributes.Add("class", "myCheckBoxClass")
发布于 2009-06-15 17:43:49
默认情况下,每个WebControl呈现为<span>
标记,外加控件作者添加的任何自定义呈现。
在编写自定义WebControl时,您通常要做的第一件事就是重写"TagKey“属性,以呈现一个div或跨度以外的其他东西。此属性的默认值为HtmlTextWriterTag.Span。
您可以子类化checkbox项并覆盖TagKey属性以呈现其他内容,但随后您必须将所有的checkbox都转换为您自己的版本。
https://stackoverflow.com/questions/997342
复制相似问题