首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么ASP.Net RadioButton和CheckBox在一个范围内渲染?

为什么ASP.Net RadioButton和CheckBox在一个范围内渲染?
EN

Stack Overflow用户
提问于 2009-06-15 17:32:43
回答 6查看 43.2K关注 0票数 60

我希望是这样的:

代码语言:javascript
复制
<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像这样呈现(为了简单起见,去掉了一些属性)

代码语言:javascript
复制
<input id="CheckBox1"    type="checkbox" class="myClass" />
<input id="RadioButton1" type="radio"    class="myClass" />
<input id="TextBox1"     type="text"     class="myClass" /> 

...when实际上,RadioButtonCheckBoxspan标记包装,并在那里应用CSS类。

代码语言:javascript
复制
<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选择器看起来很难看,因为你不能用以下命令捕获所有的选择器:

代码语言:javascript
复制
$("input.myClass")

当然,它只是要:

代码语言:javascript
复制
$("input.myClass, span.myClass input")

这是丑陋的...but。我可以编写自己的选择器,但仍然没有它应有的优雅。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-06-15 18:09:59

System.Web.UI.WebControls命名空间中的Web控件在不同的浏览器中呈现方式可能不同。你不能指望他们总是渲染相同的元素。他们可以添加他们认为需要的任何东西,以使其在特定的浏览器中工作。

如果要控制控件如何呈现为html,则应改用System.Web.UI.HtmlControls命名空间中的控件。这就是:

代码语言:javascript
复制
<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命名空间中控件的所有功能。

票数 53
EN

Stack Overflow用户

发布于 2009-11-11 05:56:20

这也让我抓狂,直到我找到了inputAttributes属性。

例如,下面是如何在checkbox控件上直接添加一个类,而不是无意义的span:

代码语言:javascript
复制
myCheckBoxControl.InputAttributes.Add("class", "myCheckBoxClass")
票数 127
EN

Stack Overflow用户

发布于 2009-06-15 17:43:49

默认情况下,每个WebControl呈现为<span>标记,外加控件作者添加的任何自定义呈现。

在编写自定义WebControl时,您通常要做的第一件事就是重写"TagKey“属性,以呈现一个div或跨度以外的其他东西。此属性的默认值为HtmlTextWriterTag.Span。

您可以子类化checkbox项并覆盖TagKey属性以呈现其他内容,但随后您必须将所有的checkbox都转换为您自己的版本。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/997342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档