web-dev-qa-db-fra.com

validation asp.net pour s'assurer que textbox a des valeurs entières

J'ai une configuration de validation requise sur une zone de texte, mais je dois également m'assurer que c'est un entier.

Comment puis-je faire ceci?

52
mrblah

Si tout ce qui vous préoccupe, c’est que le champ contienne un entier (c’est-à-dire qui ne concerne pas une plage), ajoutez un CompareValidator avec Operator propriété définie sur DataTypeCheck:

<asp:CompareValidator runat="server" Operator="DataTypeCheck" Type="Integer" 
 ControlToValidate="ValueTextBox" ErrorMessage="Value must be a whole number" />

S'il existe une plage de valeurs valide (il en existe probablement), vous pouvez utiliser un RangeValidator , comme suit:

<asp:RangeValidator runat="server" Type="Integer" 
MinimumValue="0" MaximumValue="400" ControlToValidate="ValueTextBox" 
ErrorMessage="Value must be a whole number between 0 and 400" />

Ceux-ci ne valideront que s'il y a du texte dans la zone de texte, vous aurez donc besoin de garder le RequiredFieldValidator ici aussi.

Comme @ Mahin , assurez-vous de vérifier Page.IsValid côté serveur, sinon le validateur ne fonctionne que pour les utilisateurs avec JavaScript activé.

113
bdukes

Cela me convient:

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

Je pense que vous devriez ajouter ValidationGroup="NumericValidate" à votre bouton d'envoi également.

8
Shinigamae

Utilisez Int32.TryParse.

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

Il retournera un bool afin que vous puissiez voir s'ils ont saisi un entier valide.

4
Brandon

Attachez un validateur d'expressions régulières à la zone de texte et faites en sorte que son expression soit la suivante:

^\d+$

Et bien sûr, faites également votre validation côté serveur.

2
Matthew Jones

Vous pouvez gérer cela de différentes manières. Vous pouvez ajouter un RequiredFieldValidator ainsi qu'un RangeValidator (si cela fonctionne dans votre cas) ou un CustomFieldValidator.

Lien vers le CustomFieldValidator: http://msdn.Microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator%28VS.71%29.aspx

Lien vers un article MSDN sur la validation ASP.NET: http://msdn.Microsoft.com/en-us/library/aa479045.aspx

2
bechbd

Visual Studio a maintenant un support intégré pour la vérification de plage et la vérification de type: -

Essayez ceci: - Pour la vérification de la plage Avant de valider/vérifier une plage de nombres particulière Activez la vue de conception à partir de la vue balisage. -

Affichage> Boîte à outils> Validation

Maintenant, faites glisser RangeValidator vers votre page de conception où vous souhaitez afficher le message d'erreur (bien sûr, si l'utilisateur entre une valeur hors limites), cliquez maintenant sur votre contrôle RangeValidator. Faites un clic droit et sélectionnez les propriétés. Dans la fenêtre Propriétés (elle est généralement ouverte sous la barre de solution), sélectionnez MESSAGE D'ERREUR. Écrire :-

Le nombre doit être dans la plage.

Maintenant, sélectionnez Control pour valider et sélectionnez votre TextboxID (ou écrivez-le quand même) dans le menu déroulant. Localisez Tapez dans la barre de propriétés et sélectionnez Integer.
Juste au-dessus, vous trouverez la valeur maximale et minimale. Entrez le nombre souhaité.

Pour vérification de type (sans aucune plage)
Avant de valider/vérifier une plage de nombres particulière Activez la vue Conception à partir de la vue balisage. Ensuite: -

Affichage> Boîte à outils> Validation

Faites maintenant glisser CompareValidator vers votre page de conception où vous souhaitez afficher le message d'erreur (bien sûr si l'utilisateur y entre du texte). Cliquez maintenant sur votre contrôle CompareValidator. Faites un clic droit et sélectionnez les propriétés. Dans la fenêtre Propriétés (elle est généralement ouverte sous la barre de solution), sélectionnez MESSAGE D'ERREUR. Écrire:-

La valeur doit être un nombre.

Maintenant, localisez l’option ControltoValidate et écrivez-y le nom de votre ID de contrôle (vous pouvez également sélectionner le menu déroulant). Localisez l’opérateur et écrivez DataTypeCheck (vous pouvez également sélectionner le menu déroulant). Recherchez à nouveau l’option Type et écrivez Integer. en elle.

C'est assis.

Alternativement vous pouvez écrire le code suivant dans votre page aspx: - <% - pour valider sans aucune plage -%>

1
Prince Sharma

Vous pouvez utiliser le script Java pour cela: -

<asp:TextBox ID="textbox1" runat="server" Width="150px" MaxLength="8" onkeypress="if(event.keyCode<48 || event.keyCode>57)event.returnValue=false;"></asp:TextBox>
1
Mohit Kumar
<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> 
1
devraj kumar

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

Lorsque vous utilisez les contrôles Server validator, vous devez faire attention à ce que n'importe qui puisse désactiver javascript dans son navigateur. Donc, vous devriez utiliser Page.IsValid Propriété toujours côté serveur.

1
MRG

Double-cliquez sur votre bouton et utilisez le code suivant: -

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  
  }
0
Prince Sharma