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 个整数值,只需使用Visual Studio 现在已经集成了对范围检查和类型检查的支持:-
试试这个:- 用于范围检查 在验证/检查特定范围的数字之前从标记视图切换到设计视图。然后:-
查看>工具箱>验证
现在将 RangeValidator 拖到您要显示错误消息的设计页面(当然,如果用户输入的值超出范围) 现在单击您的 RangeValidator 控件。右键单击并选择属性。在“属性”窗口(通常在解决方案栏下方打开)中选择 ERROR MESSAGE 。写:-
数字必须在范围内。
现在选择 Control 以验证并从下拉列表中选择您的 TextboxID(或无论如何都写它)。在属性栏中找到 Type 并选择向下 Integer。 就在它上面你会发现最大值和最小值。输入你想要的数字。
用于类型检查(没有任何范围) 在验证/检查特定范围的数字之前从标记视图切换到设计视图。然后:-
查看>工具箱>验证
现在将 CompareValidator 拖到您想要显示错误消息的设计页面(当然,如果用户正在其中输入一些文本)。 现在单击您的 CompareValidator 控件。右键单击并选择属性。在“属性”窗口(通常在解决方案栏下方打开)中选择 ERROR MESSAGE 。写:-
值必须是数字。
现在找到 ControltoValidate 选项并在其中写入您的 controlID 名称(或者您也可以从下拉列表中选择)。找到 Operator 选项并在其中写入 DataTypeCheck(或者您也可以从下拉列表中选择)。再次找到 Type 选项并在其中写入 Integer 。
那是坐着的。
或者您可以在您的 aspx 页面中编写以下代码:-
【讨论】:
【参考方案10】:只需添加以下代码:
<asp:FilteredTextBoxExtender ID="txtAltitudeMin_FilteredTextBoxExtender" runat="server" Enabled="True" TargetControlID="txtAltitudeMin" FilterType="Numbers"></asp:FilteredTextBoxExtender>
【讨论】:
欢迎来到***,如果可能的话,请提供一些上下文或详细信息,说明为什么它会解决问题,这将有助于其他人,谢谢。【参考方案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 验证以确保文本框具有整数值的主要内容,如果未能解决你的问题,请参考以下文章