Asp.net复选框和html数据属性

Ort*_*iga 18 asp.net asp.net-3.5 asp.net-4.0

在asp.net中,如果使用自定义属性,通常会按原样呈现.

考虑到这个标记(注:属性,如id,namefor所有的例子作为自己生成的ID被拆除/名称详细):

<asp:TextBox runat="server" data-foo="bar" />
Run Code Online (Sandbox Code Playgroud)

在asp.net中呈现为:

<input type="text" data-foo="bar" />
Run Code Online (Sandbox Code Playgroud)

也就是说,asp.net保持data-foo不变.

复选框通常呈现如下:

<asp:CheckBox runat="server" Text="Normal" />
Run Code Online (Sandbox Code Playgroud)

呈现为:

<input type="checkbox" />
<label>Normal</label>
Run Code Online (Sandbox Code Playgroud)

但是,如果您在复选框上添加自定义属性:

<asp:CheckBox runat="server" Text="Custom attribute" data-foo="bar"  />
Run Code Online (Sandbox Code Playgroud)

它呈现为:

<span data-foo="bar">
    <input type="checkbox" />
    <label>Custom attribute</label>
</span>
Run Code Online (Sandbox Code Playgroud)

如您所见,渲染的范围用于保存属性.如果在后面的代码中添加属性,也会发生这种情况.任何其他HtmlControl,AFAIK都不会发生这种情况.

有谁知道为什么这个范围被渲染来保存属性?

无论如何在输入标签中呈现属性?

Luk*_*z M 21

我不确定它为什么用span来渲染,但我想你可以直接将属性添加到代码中input元素CheckBox -behid,如下所示:

myCheckBox.InputAttributes.Add(...)
Run Code Online (Sandbox Code Playgroud)

参考链接:

更新

使用了另一个父元素,因此应用于a的属性CheckBox可以同时影响input文本和文本.我认为它是一个span(而不是一个div),因为它是一个内联元素,使得在不同场景中使用更方便.

参考链接: