【问题标题】:asp.net validation to make sure textbox has integer valuesasp.net 验证以确保文本框具有整数值
【发布时间】:2010-11-28 11:55:16
【问题描述】:

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

我该怎么做?

【问题讨论】:

    标签: asp.net validation


    【解决方案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 个整数值,只需使用 ------ Devraj Kumar, Kanrad Technology
              • 您可以编辑您的答案以添加更多详细信息(它比评论更具可读性)
              【解决方案9】:

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

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

              查看>工具箱>验证

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

              数字必须在范围内。

              现在选择 Control 以验证并从下拉列表中选择您的 TextboxID(或无论如何都写它)。在属性栏中找到 Type 并选择向下 Integer。
              就在它上面你会发现最大值和最小值。输入你想要的数字。

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

              查看>工具箱>验证

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

              值必须是数字。

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

              那是坐着的。

              或者您可以在您的 aspx 页面中编写以下代码:-

              【讨论】:

                【解决方案10】:

                只需添加以下代码:

                &lt;asp:FilteredTextBoxExtender ID="txtAltitudeMin_FilteredTextBoxExtender" runat="server" Enabled="True" TargetControlID="txtAltitudeMin" FilterType="Numbers"&gt;&lt;/asp:FilteredTextBoxExtender&gt;

                【讨论】:

                • 欢迎来到stackoverflow,如果可能的话,请提供一些上下文或详细信息,说明为什么它会解决问题,这将有助于其他人,谢谢。
                【解决方案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;};");
                  

                  【讨论】:

                    猜你喜欢
                    • 2021-12-28
                    • 1970-01-01
                    • 1970-01-01
                    • 2014-07-10
                    • 2014-11-08
                    • 1970-01-01
                    • 2013-06-07
                    • 1970-01-01
                    • 2015-11-13
                    相关资源
                    最近更新 更多