在 asp.net 中,如果您使用自定义属性,通常它会按原样呈现。
考虑到这个标记( 注意: 属性,例如 id
、name
和 for
在所有示例中都被删除,因为它们生成的 id/名称是冗长的):
<asp:TextBox runat="server" data-foo="bar" />
在 asp.net 中呈现为:
<input type="text" data-foo="bar" />
即asp.net保留
data-foo
原封不动。复选框通常呈现如下:
<asp:CheckBox runat="server" Text="Normal" />
呈现为:
<input type="checkbox" />
<label>Normal</label>
但是,如果您在复选框上添加自定义属性:
<asp:CheckBox runat="server" Text="Custom attribute" data-foo="bar" />
它呈现为:
<span data-foo="bar">
<input type="checkbox" />
<label>Custom attribute</label>
</span>
如您所见,呈现了一个跨度以保存该属性。如果您在后面的代码中添加属性,也会发生这种情况。任何其他 HtmlControl、AFAIK 都不会发生这种情况。
有谁知道为什么渲染这个跨度来保存属性?
无论如何要在输入标签中呈现属性?
最佳答案
我不确定为什么用跨度渲染它,但我想你可以直接将属性添加到 input
CheckBox
的元素在代码隐藏 像这样:
myCheckBox.InputAttributes.Add(...)
引用链接:
更新
使用了一个额外的父元素,以便您应用到
CheckBox
的属性可以同时影响 input
和文字。我想是 span
(而不是 div
),因为它是 内联元素 ,更方便在不同场景下使用。引用链接:
关于Asp.net 复选框和 html 数据属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10706714/