在asp.net中,如果使用自定义属性,则通常按原样呈现。
考虑到此标记(请注意:在所有示例中,都删除了诸如id
,name
和for
之类的属性,因为它们生成的id /名称是冗长的):
<asp:TextBox runat="server" data-foo="bar" />
在asp.net中呈现为:
<input type="text" data-foo="bar" />
也就是说,asp.net保持不变。
复选框通常以如下方式呈现:
<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(...)
参考链接:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.checkbox.inputattributes.aspx
http://forums.asp.net/p/541142/541562.aspx
http://msdn.microsoft.com/en-us/library/system.web.ui.attributecollection.add.aspx
更新资料
使用了附加的父元素,以便应用于
CheckBox
的属性可以影响input
和文本。我想这是一个span
(而不是div
),因为它是一个内联元素,因此在不同情况下使用起来更加方便。参考链接:
http://en.wikipedia.org/wiki/Span_and_div#Differences_and_default_behavior
http://learnwebdesignonline.com/span-div
关于asp.net - ASP.NET复选框和HTML数据属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10706714/