asp.net 验证以确保文本框具有整数值

Posted

技术标签:

【中文标题】asp.net 验证以确保文本框具有整数值【英文标题】:asp.net validation to make sure textbox has integer values 【发布时间】:2010-11-28 11:55:16 【问题描述】:

我在文本框上有一个必需的验证设置,但我还必须确保它是一个整数。

我该怎么做?

【问题讨论】:

【参考方案1】:

如果您只关心该字段包含一个整数(即不关心范围),那么添加一个CompareValidator 并将其Operator 属性设置为DataTypeCheck

<asp:CompareValidator runat="server" Operator="DataTypeCheck" Type="Integer" 
 ControlToValidate="ValueTextBox" ErrorMessage="Value must be a whole number" />

如果存在特定范围的有效值(可能存在),那么您可以使用RangeValidator,如下所示:

<asp:RangeValidator runat="server" Type="Integer" 
MinimumValue="0" MaximumValue="400" ControlToValidate="ValueTextBox" 
ErrorMessage="Value must be a whole number between 0 and 400" />

这些只会验证 TextBox 中是否有文本,因此您也需要将 RequiredFieldValidator 保留在那里。

正如@Mahin 所说,请确保检查服务器端的Page.IsValid 属性,否则验证器仅适用于启用 javascript 的用户。

【讨论】:

CompareValidator 检查整数数据类型的可能问题:它似乎只检查正确的数字 (0-9),但不检查范围。所以使用这个验证器,如果用户输入的值太大或太小,你仍然会得到超出范围的异常。最好也添加一个范围验证器!【参考方案2】:

这对我来说很好用:

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
     ControlToValidate="YourTextBoxID"
     ErrorMessage="Only numeric allowed." ForeColor="Red"
     ValidationExpression="^[0-9]*$" ValidationGroup="NumericValidate">*
</asp:RegularExpressionValidator>

我认为您也应该将ValidationGroup="NumericValidate" 添加到您的提交按钮。

【讨论】:

【参考方案3】:

使用Int32.TryParse.

 int integer;
 Int32.TryParse(Textbox.Text, out integer)

它将返回一个布尔值,以便您查看他们是否输入了有效的整数。

【讨论】:

【参考方案4】:

您可以为此使用 java 脚本:-

<asp:TextBox ID="textbox1" runat="server" Width="150px" MaxLength="8" onkeypress="if(event.keyCode<48 || event.keyCode>57)event.returnValue=false;"></asp:TextBox>

【讨论】:

注意:如果您从剪贴板粘贴文本,onkeypress 不会触发。【参考方案5】:

将正则表达式验证器附加到文本框并使其表达式如下:

^\d+$

当然,还要进行服务器端验证。

【讨论】:

【参考方案6】:

有几种不同的方法可以处理这个问题。您可以添加一个 RequiredFieldValidator 和一个 RangeValidator(如果这适用于您的情况),或者您可以添加一个 CustomFieldValidator。

到 CustomFieldValidator 的链接: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator%28VS.71%29.aspx

关于 ASP.NET 验证的 MSDN 文章链接: http://msdn.microsoft.com/en-us/library/aa479045.aspx

【讨论】:

【参考方案7】:

http://msdn.microsoft.com/en-us/library/ad548tzy%28VS.71%29.aspx

在使用服务器验证器控件时,您必须注意任何人都可以在其浏览器中禁用 javascript 的事实。因此,您应该始终在服务器端使用 Page.IsValid 属性。

【讨论】:

【参考方案8】:
<script language="javascript" type="text/javascript">
        function fixedlength(textboxID, keyEvent, maxlength) 
            //validation for digits upto 'maxlength' defined by caller function
            if (textboxID.value.length > maxlength) 
                textboxID.value = textboxID.value.substr(0, maxlength);
            
            else if (textboxID.value.length < maxlength || textboxID.value.length == maxlength) 
                textboxID.value = textboxID.value.replace(/[^\d]+/g, '');
                return true;
            
            else
                return false;
        
 </script>

<asp:TextBox ID="txtNextVisit" runat="server" MaxLength="2" onblur="return fixedlength(this, event, 2);" onkeypress="return fixedlength(this, event, 2);" onkeyup="return fixedlength(this, event, 2);"></asp:TextBox> 

【讨论】:

这个 javascript 函数将只接受 2 个整数,也不允许用户输入除整数以外的值。如果你想要超过 2 个整数值,只需使用 ------ Devraj Kumar, Kanrad Technology 您可以编辑您的答案以添加更多详细信息(它比评论更具可读性)【参考方案9】:

Visual Studio 现在已经集成了对范围检查和类型检查的支持:-

试试这个:- 用于范围检查 在验证/检查特定范围的数字之前从标记视图切换到设计视图。然后:-

查看>工具箱>验证

现在将 RangeValidator 拖到您要显示错误消息的设计页面(当然,如果用户输入的值超出范围) 现在单击您的 RangeValidator 控件。右键单击并选择属性。在“属性”窗口(通常在解决方案栏下方打开)中选择 ERROR MESSAGE 。写:-

数字必须在范围内。

现在选择 Control 以验证并从下拉列表中选择您的 TextboxID(或无论如何都写它)。在属性栏中找到 Type 并选择向下 Integer。 就在它上面你会发现最大值和最小值。输入你想要的数字。

用于类型检查(没有任何范围) 在验证/检查特定范围的数字之前从标记视图切换到设计视图。然后:-

查看>工具箱>验证

现在将 CompareValidator 拖到您想要显示错误消息的设计页面(当然,如果用户正在其中输入一些文本)。 现在单击您的 CompareValidator 控件。右键单击并选择属性。在“属性”窗口(通常在解决方案栏下方打开)中选择 ERROR MESSAGE 。写:-

值必须是数字。

现在找到 ControltoValidate 选项并在其中写入您的 controlID 名称(或者您也可以从下拉列表中选择)。找到 Operator 选项并在其中写入 DataTypeCheck(或者您也可以从下拉列表中选择)。再次找到 Type 选项并在其中写入 Integer 。

那是坐着的。

或者您可以在您的 aspx 页面中编写以下代码:-

【讨论】:

【参考方案10】:

只需添加以下代码:

&lt;asp:FilteredTextBoxExtender ID="txtAltitudeMin_FilteredTextBoxExtender" runat="server" Enabled="True" TargetControlID="txtAltitudeMin" FilterType="Numbers"&gt;&lt;/asp:FilteredTextBoxExtender&gt;

【讨论】:

欢迎来到***,如果可能的话,请提供一些上下文或详细信息,说明为什么它会解决问题,这将有助于其他人,谢谢。【参考方案11】:

双击您的按钮并使用以下代码:-

protected void button_click(object sender,EventArgs e)

 int parsedValue;
 if(int.TryParse(!txt.Text,out parsedValue))
 
 Label.Text = "Please specify a number only !!"; //Will put a text in a label so make     
    //sure                
  //you have a label
 
 else
  
    // do what you want to  
  

【讨论】:

【参考方案12】:

在 C# asp.net WebForms 中

txtBoxNumber.Attributes.Add("onkeypress", "javascript:if(event.which!=8 && event.which!=0 && (event.which<43 || event.which>57))return false;;");

【讨论】:

以上是关于asp.net 验证以确保文本框具有整数值的主要内容,如果未能解决你的问题,请参考以下文章

asp.net MVC Razor 文本框控件验证

asp.net怎么限制文本框输入的类型c#

在文本框中插入整数值

ASP.NET 验证失败时更改文本框的 css 类

Asp.net中文本框非空验证及比较验证的一种简单方法

如何使用javascript在asp.net中gridview内的按钮单击上应用文本框空白验证?