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

考虑到此标记(请注意:在所有示例中,都删除了诸如idnamefor之类的属性,因为它们生成的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都不会发生这种情况。

有谁知道为什么渲染此跨度以保留该属性?

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

最佳答案

我不确定为什么要使用跨度来渲染它,但是我想您可以像这样通过代码隐藏将属性直接添加到inputCheckBox元素中:

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/

10-17 02:47