Renderice ASP.NET TextBox como tipo de entrada HTML5 “Number”

Cuando un ASP.NET TextBox lo renderiza, produce:

 

Sin embargo, necesito que se muestre como un tipo de número HTML5 en su lugar, como:

  

es posible?

Tenía el mismo requisito para un sitio web móvil usando ASP.NET. Después de no encontrar una buena solución, intenté simplemente type="number" directamente en el cuadro de texto. Para mi sorpresa, ¡funcionó! Incredulous, creé un proyecto de prueba simple para verificar. Ejecuté esta línea de código en cada versión .NET:

   

Aquí están los resultados:

     

En pocas palabras: si está utilizando ASP.NET 4.0 o posterior, simplemente agregue type="number" a su cuadro de texto.

Anular el control de cuadro de texto base

 public class HTML5TextBox : TextBox { ..... protected override void Render(HtmlTextWriter writer) { //Sth like the code below, you need do some research though writer.AddAttribute(HtmlTextWriterAttribute.Type,"Number"); writer.AddAttribute(HtmlTextWriterAttribute.Id, ClientID + "_displayTXT"); writer.AddAttribute(HtmlTextWriterAttribute.Name,this.UniqueID + "t1"); writer.AddAttribute(HtmlTextWriterAttribute.Value,base.Text); writer.RenderBeginTag(HtmlTextWriterTag.Input); writer.RenderEndTag(); } .... } 

O puede verificar el que acabo de encontrar en http://www.codeproject.com/Articles/68834/Enhanced-Textbox-Control

tendrías que crear un nuevo control heredando de TextBox y anular el renderizado, o puedes generar un fragmento de javascript para cambiarlo después del hecho.

Pude hacer esto con un control creado dinámicamente como este:

 TextBox control = new TextBox(); control.Attributes.Add("Type", "number"); 

La propiedad TextMode se usa para eso, por ejemplo

  

podría ser renderizado como

  

Los modos de texto además de [MultiLine | Contraseña | SingleLine] se introdujeron un tiempo después de VS2010; la documentación no me dice exactamente cuándo.

set type="number" en independientemente de que no esté apareciendo en la lista, sorprendentemente funcionará