【发布时间】:2012-03-12 23:47:03
【问题描述】:
当 ASP.NET 文本框呈现时,它会生成:
<input type="text" />
但是我需要将其呈现为 HTML5 数字类型,例如:
<input type="number" />
这可能吗?
【问题讨论】:
当 ASP.NET 文本框呈现时,它会生成:
<input type="text" />
但是我需要将其呈现为 HTML5 数字类型,例如:
<input type="number" />
这可能吗?
【问题讨论】:
您必须创建一个继承自 TextBox 的新控件并覆盖呈现,或者您可以生成一个 javascript sn-p 以在事后对其进行更改。
【讨论】:
覆盖基本文本框控件
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();
}
....
}
或者你可以查看我刚刚在http://www.codeproject.com/Articles/68834/Enhanced-Textbox-Control找到的那个
【讨论】:
我对使用 ASP.NET 的移动网站有同样的要求。在没有找到好的解决方案后,我尝试直接在文本框上设置type="number"。令我惊讶的是,它奏效了!难以置信,我创建了一个简单的测试项目来仔细检查。我在每个 .NET 版本中运行了这行代码:
<!-- this HTML tested in each .NET version -->
<asp:TextBox runat="server" type="number" />
结果如下:
<!-- 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" />
底线:如果您使用的是 ASP.NET 4.0 或更高版本,只需将 type="number" 添加到您的文本框。
【讨论】:
type 属性将重复。我已经编辑了答案,以便更清楚我在测试中做了什么。
我可以使用这样的动态创建控件来做到这一点:
TextBox control = new TextBox();
control.Attributes.Add("Type", "number");
【讨论】:
在<asp:textbox type="number" runat="server"> 中设置type="number"
不管它没有出现在列表中,令人惊讶的是它会起作用
【讨论】:
TextMode 属性用于此目的,例如
<asp:TextBox ID="uPhone" CssClass="formEntry" TextMode="Phone" ClientIDMode="Static" runat="server"></asp:TextBox>
可能呈现为
<input name="ctl00$ContentPlaceHolder1$uPhone" id="uPhone" class="formEntry" type="tel">
除了 [ MultiLine | 的文本模式密码 | SingleLine ] 是在 VS2010 之后的某个时间引入的 - 文档并没有很快告诉我确切的时间。
【讨论】:
你可以使用 Enum TextBoxMode 的成员
<asp:TextBox ID="MyAwesomeId" runat="server" TextMode="Number"></asp:TextBox>
这个渲染
<input type="number" value="5" id="MainContent_MyAwesomeId" c>
完整的枚举是
public enum TextBoxMode
{
SingleLine = 0,
MultiLine = 1,
Password = 2,
Color = 3,
Date = 4,
DateTime = 5,
DateTimeLocal = 6,
Email = 7,
Month = 8
Number = 9,
Range = 10,
Search = 11,
Phone = 12,
Time = 13,
Url = 14,
Week = 15
}
【讨论】: