在ASP.NET中,如果使用自定义属性,通常会按原样呈现。
考虑以下标记(注意:在所有示例中,例如id、name和for等属性已被删除,因为它们生成的id/names过于冗长):
考虑以下标记(注意:在所有示例中,例如id、name和for等属性已被删除,因为它们生成的id/names过于冗长):
<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>
可以看到,生成的代码中会包含一个span元素来存放属性。即使是在后端代码中添加该属性,这种情况仍然存在。据我所知,其他HtmlControl并没有这种情况。
有人知道为什么要使用span元素来存放属性吗?
有没有办法将属性直接渲染在input标签中?