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?
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é.
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.
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.
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.
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
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 -%>
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>
<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>
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.
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
}