在 asp.net 中,如果您使用自定义属性,通常它会按原样呈现。
考虑到这个标记(注意:所有示例中都删除了和等属性,id
因为它们生成的 id/name 很冗长):name
for
<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 都不会发生这种情况。
有谁知道为什么渲染这个跨度来保存属性?
无论如何要在输入标签中呈现属性?