将ASP.NET TextBox渲染为HTML5输入类型“Number”

wa7juj8i  于 2023-06-07  发布在  .NET
关注(0)|答案(7)|浏览(187)

当ASP.NET TextBox呈现时,它会生成:

<input type="text" />

然而,我需要它呈现为HTML5数字类型,如:

<input type="number" />

这可能吗?

j2cgzkjk

j2cgzkjk1#

我对使用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"添加到你的文本框。

t98cgbkg

t98cgbkg2#

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之后的一段时间引入的--文档并没有很快告诉我确切的时间。

r55awzrz

r55awzrz3#

重写基TextBox控件

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找到的一个

l7wslrjt

l7wslrjt4#

可以使用EnumTextBoxMode的成员

<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
}
bmp9r5qi

bmp9r5qi5#

我可以用这样一个动态创建的控件来做到这一点:

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

dfddblmv6#

你必须创建一个继承自TextBox的新控件,并覆盖渲染,或者你可以生成一个JavaScript片段来改变它。

osh3o9ms

osh3o9ms7#

<asp:textbox type="number" runat="server">中设置type="number",不管它没有出现在列表中,令人惊讶的是它会工作

相关问题