我在文本框上有一个必需的验证设置,但我还必须确保它是一个整数。
我该怎么做?
答案 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)
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
}