我希望是这样的:

<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选择器看起来很难看,因为您不能用以下命令捕获所有选择器:

$("input.myClass")

就算它只是要:

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

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

推荐答案

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相关问答推荐

C# - 将 xyz 平铺转换为纬度/经度,反之亦然,给出不同的结果

尽管安装了 AspNetCoreModule,但在 IIS 中运行 ASP.NET Core 应用程序时出现 0x8007000d 错误 500.19

我迷路了. ASP.NET MVC 5 发生了什么?

新的 csproj 文件结构可以与 ASP.NET Framework 项目一起使用吗?

为什么 Razor Pages 是在 Asp.net Core 中创建 Web UI 的推荐方法?

VS2017 无法加载文件或程序集 Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 或其依赖项之一

ASP.NET Core:在发布时排除或包含文件

借助 SharedResources 实现 ASP.NET Core 本地化

.NET Core Identity Server 4 身份验证 VS 身份验证

RestSharp 获取请求的完整 URL

从 Web API 使用 HttpClient 发布 JsonObject

ASP.NET Core Web API 身份验证

是否应该将 project.lock.json 文件签入源代码管理? (ASP.NET 核心 1.0)

ASP.NET Core 1.0 ConfigurationBuilder().AddJsonFile("appsettings.json");找不到文件

如何在 ASP.NET core rc2 中禁用浏览器缓存?

在 ASP.NET Core 1.0 上处理大文件上传

Azure 自定义控制器/API .Net 后端

IIS Express - 增加内存限制

如何在 ASP.NET 中使用按钮标记?

与 Request.RequestURI 等效的 ASP.NET Core MVC 是什么?