asp.netvalidation,以确保文本框具有整数值

我有一个必需的validation设置文本框,但我必须确保它是一个整数也。

我怎样才能做到这一点?

如果所有你关心的是该字段包含一个整数(即不涉及范围),那么添加一个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" /> 

这些只会validation文本框中是否有文本,所以您也需要保留RequiredFieldValidator

正如@Mahin所说,确保你检查服务器端的Page.IsValid属性,否则validation器只适用于启用JavaScript的用户。

这对我来说很好:

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

我想你应该添加ValidationGroup="NumericValidate"到你的提交button。

使用Int32.TryParse。

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

它会返回一个布尔,所以你可以看到他们是否input了一个有效的整数。

将正则expression式validation器附加到文本框,并使其expression式如下所示:

 ^\d+$ 

当然,也做你的服务器端validation。

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

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

链接到MSDN文章ASP.NETvalidation: http : //msdn.microsoft.com/en-us/library/aa479045.aspx

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

当使用服务器validation控件时,你必须注意事实,任何人都可以在浏览器中禁用JavaScript。 所以你应该总是在服务器端使用Page.IsValid属性。

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

你可以使用这个脚本:

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

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

试试这个: –对于范围检查在validation/检查特定范围的数字之前从标记视图切换到devise视图。然后: –

查看>工具箱>validation

现在,将RangeValidator拖动到您想要显示错误消息的devise页面(如果用户正在input超出范围值的话),现在单击您的RangeValidator控件。 右键单击并select属性。 在“属性”窗口中(通常在解决scheme栏下方打开),select“错误消息”。 写: –

数字必须在范围内。

现在select控制来validation,并从下拉列表中select您的TextboxID(或反正写)。find属性栏本身,并select向下整型。
就在它上面,你会发现最大值和最小值。

对于types检查(没有任何范围)
validation/检查特定范围的数字之前从标记视图切换到devise视图。然后: –

查看>工具箱>validation

现在将CompareValidator拖放到您想要显示错误消息的devise页面(如果用户正在input文本的话)。 现在点击你的CompareValidator控件。 右键单击并select属性。 在“属性”窗口中(通常在解决scheme栏下方打开),select“错误消息”。 写:-

值必须是一个数字。

现在findControltoValidate选项,并在其中写入您的controlID名称(或者您也可以从下拉列表中select)。find操作员选项并写入DataTypeCheck(或者您也可以从下拉列表中select)。再次findType选项并写入Integer在里面 。

这是坐。

或者,您可以在aspx页面中写入以下代码: – <% – validation没有任何范围 – %>

双击你的button,并使用下面的代码: –

 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 }