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

标签 asp.net asp.net-3.5 asp.net-4.0

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

考虑到这个标记( 注意: 属性,例如 idnamefor 在所有示例中都被删除,因为它们生成的 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(...)

引用链接:
  • 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 复选框和 html 数据属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10706714/

    相关文章:

    asp.net - JsonResult 相当于 [DataMember(Name ="Test")]

    javascript - 如何以编程方式检查按钮单击上的真正 extjs 树面板复选框?

    asp.net - 通过 ASP.NET Web 应用程序上传 500MB 以上的文件

    jQuery 自动回发问题

    asp.net - 如何设置 ASP.NET DataPager 省略号的样式

    .net - 何时使用 CreateChildControls() 与嵌入 ASPX

    asp.net-mvc - 使用实体键伪造外键更新

    .NET 4.0 中的多线程和性能

    asp.net - ASP.NET 4.0 中的信任级别是否已过时?

    asp.net - 如何从Web表单请求返回HTTP 400-错误请求错误?