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 }
- 使用ASP.NET MVC实现字段validation的最佳方式是什么?
- “有效的XML”和“良好的XML”之间有什么区别吗?
- PHPdatevalidation
- 如何阻止Chrome浏览器变黄我的网站的input框?
- 使用JWT进行跨域身份validation的单点loginstream程
- Safari JS不能parsingYYYY-MM-DD的date格式?
- 如何限制EditText只接受字母数字字符
- Asp.netformsauthentication和多个域
- 在FormsAuthentication.SignOut()之后,Page.User.Identity.IsAuthenticated仍然为true。