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

时间:2009-09-15 14:43:32

标签: asp.net validation

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

我该怎么做?

11 个答案:

答案 0 :(得分:112)

如果您关心的是该字段包含整数(即与范围无关),则添加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的用户。

答案 1 :(得分:8)

这对我很好:

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

我认为您也应该在提交按钮中添加ValidationGroup="NumericValidate"

答案 2 :(得分:4)

使用Int32.TryParse.

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

它将返回一个bool,以便您可以看到它们是否输入了有效的整数。

答案 3 :(得分:2)

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

^\d+$

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

答案 4 :(得分:2)

有几种不同的方法可以解决这个问题。您可以添加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

答案 5 :(得分:1)

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

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

答案 6 :(得分:1)

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

答案 7 :(得分:1)

您可以使用javascript: -

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

答案 8 :(得分:1)

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

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

  

视图&gt;&工具箱GT;验证

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

  

数字必须在范围内。

现在选择Control来验证并从下拉列表中选择你的TextboxID(或者无论如何写入)。定位在属性栏中键入并选择向下整数。
在它上方,您将找到最大值和最小值。键入您想要的数字。

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

  

视图&gt;&工具箱GT;验证

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

  

值必须是数字。

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

那就好了。

或者您可以在aspx页面中编写以下代码: -  &lt;% - 无任何范围验证 - %&gt;

答案 9 :(得分:1)

只需添加以下代码:

<asp:FilteredTextBoxExtender ID="txtAltitudeMin_FilteredTextBoxExtender" runat="server" Enabled="True" TargetControlID="txtAltitudeMin" FilterType="Numbers"></asp:FilteredTextBoxExtender>

答案 10 :(得分:0)

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

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  
  }