我希望是这样的:

<asp:CheckBox    ID="CheckBox1"    runat="server" CssClass="myClass" />
<asp:RadioButton ID="RadioButton1" runat="server" CssClass="myClass" />
<asp:TextBox     ID="TextBox1"     runat="server" CssClass="myClass" />

.要像这样渲染(with some attributes removed for simplicity):

<input id="CheckBox1"    type="checkbox" class="myClass" />
<input id="RadioButton1" type="radio"    class="myClass" />
<input id="TextBox1"     type="text"     class="myClass" /> 

...实际上,RadioButtonCheckBoxspan标记包装,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 Select 器看起来很难看,因为您不能用以下命令捕获所有 Select 器:

$("input.myClass")

就算它只是要:

$("input.myClass, span.myClass input")

.但那太难看了我可以编写我自己的 Select 器,但同样没有它应有的优雅.

推荐答案

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命名空间中控件的所有功能.

Asp.net相关问答推荐

Razor中的共享本地化资源文件

更新剃须刀页面中图表的值

缓存httpmessage内容

ASP.NET Core 延迟加载始终返回 null

HttpRuntime.Cache[] 与 Application[]

InvalidOperationException:在程序集上找不到UserSecretsIdAttribute

在 ASP.Net 中使用自定义 RoleProvider 时如何允许多个角色查看页面

在 lambda 表达式中否定 Func

ASP.NET @Register 与 @Reference

静态字段与会话变量

如何从网页 (asp.net) 启动 EXE

问题映射 HttpHandler --> HTTP Error 404 Not Found

asp.net 中的 Eval() 有什么用

MVC 3视图中的当前上下文中不存在名称'HTML'

带有文件名的 ASP.net MVC4 WebApi 路由

如何在 C# 中转换 TryCast?

GMT 和 UTC 一样吗?

如何将表从存储过程检索到数据表?

StyleBundle 索引超出了数组的范围

在.net的内存数据库中