Render ASP.NET TextBox come HTML5 Tipo di input “Numero”

Quando un rendering di ASP.NET TextBox produce:

 

Tuttavia, ho bisogno di renderlo come un tipo di numero HTML5, come:

  

È ansible?

Ho avuto lo stesso requisito per un sito web per dispositivi mobili che utilizza ASP.NET. Dopo aver trovato nessuna buona soluzione, ho provato semplicemente a impostare type="number" direttamente sulla casella di testo. Con mia sorpresa, ha funzionato! Incredulo, ho creato un semplice progetto di test da ricontrollare. Ho eseguito questa riga di codice in ciascuna versione .NET:

   

Ecco i risultati:

     

In conclusione: se si utilizza ASP.NET 4.0 o versione successiva, è sufficiente aggiungere type="number" alla casella di testo.

Sostituisci il controllo della casella di testo di 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(); } .... } 

Oppure puoi controllare quello che ho appena trovato su http://www.codeproject.com/Articles/68834/Enhanced-Textbox-Control

dovresti creare un nuovo controllo ereditato da TextBox e sovrascrivere il rendering, oppure puoi generare uno snippet di javascript per cambiarlo dopo il fatto.

Sono stato in grado di farlo con un controllo creato in modo dinamico come questo:

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

La proprietà TextMode viene utilizzata per questo, ad es

  

potrebbe essere reso come

  

Le modalità di testo oltre a [MultiLine | Password | SingleLine] sono stati introdotti un po ‘di tempo dopo VS2010 – la documentazione non mi dice esattamente quando.

set type="number" in indipendentemente dal fatto che non compaia nell’elenco, sorprendentemente funzionerà