Casilla de verificación de Asp.net y atributo de datos html

En asp.net, si usa un atributo personalizado, generalmente se procesa como está.

Teniendo en cuenta este marcado (Nota: atributos tales comoid, name yfor se eliminaron en todos los ejemplos ya que sus ID / nombres generados son detallados):

<asp:TextBox runat="server" data-foo="bar" />

Se representa en asp.net como:

<input type="text" data-foo="bar" />

Es decir, asp.net mantienedata-foo sin tocar

La casilla de verificación se suele mostrar de esta manera:

<asp:CheckBox runat="server" Text="Normal" />

Se rinde como:

<input type="checkbox" />
<label>Normal</label>

Pero si agrega un atributo personalizado en una casilla de verificación:

<asp:CheckBox runat="server" Text="Custom attribute" data-foo="bar"  />

Se rinde como:

<span data-foo="bar">
    <input type="checkbox" />
    <label>Custom attribute</label>
</span>

Como puede ver, un intervalo en renderizado para contener el atributo. Esto también sucede si agrega el atributo en el código detrás. Esto no sucede con ningún otro HtmlControl, AFAIK.

¿Alguien sabe por qué este intervalo se representa para mantener el atributo?

¿Hay alguna forma de representar el atributo en la etiqueta de entrada?

Respuestas a la pregunta(4)

Su respuesta a la pregunta