valid type tag runat only number not for asp asp.net html5 textbox

asp.net - tag - input type runat server



Renderice ASP.NET TextBox como tipo de entrada HTML5 "Number" (5)

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

Cuando un ASP.NET TextBox lo renderiza, produce:

<input type="text" />

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

<input type="number" />

es posible?


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.


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:

<!-- this HTML tested in each .NET version --> <asp:TextBox runat="server" type="number" />

Aquí están los resultados:

<!-- ASP.NET 2.0, 3.0, and 3.5 --> <input name="ctl01" type="text" type="number" /> <!-- ASP.NET 4.0 and 4.5 --> <input name="ctl01" type="number" />

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


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

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


set type="number" en <asp:textbox type="number" runat="server"> independientemente de que no esté apareciendo en la lista, sorprendentemente funcionará