91 votes

Comment autoriser uniquement les nombres dans une zone de texte dans mvc4 razor ?

J'ai 3 zones de texte qui prennent les valeurs code postal, numéro de téléphone mobile et numéro de résidence. J'ai trouvé la solution pour n'autoriser que le numéro dans la zone de texte en utilisant Jquery dans le post ci-dessous.

Je voudrais qu'une zone de texte "EditFor" n'accepte que les chiffres.

mais pouvons-nous faire cela en utilisant les annotations de données car j'utilise MVC4 razor ?

115voto

hubson bropa Points 913

J'étais juste en train de jouer avec l'entrée HTML5 type=number. bien qu'elle ne soit pas supportée par tous les navigateurs, je pense que c'est la voie à suivre pour gérer la manipulation de types spécifiques (nombre par exemple). assez simple à faire avec razor (l'ex est VB)

@Html.TextBoxFor(Function(model) model.Port, New With {.type = "number"})

et grâce à Lee Richardson, la manière c#

@Html.TextBoxFor(i => i.Port, new { @type = "number" }) 

Cela dépasse le cadre de la question, mais vous pourriez adopter la même approche pour tout type d'entrée html5.

67voto

Donal Lafferty Points 1390

Utilisez une expression régulière, par exemple

[RegularExpression("([1-9][0-9]*)", ErrorMessage = "Count must be a natural number")]
public int Count { get; set; }

58voto

reala valoro Points 148
@Html.TextBoxFor(m => m.PositiveNumber, 
                      new { @type = "number", @class = "span4", @min = "0" })

Dans MVC 5 avec Razor, vous pouvez ajouter n'importe quel attribut d'entrée html dans l'objet anonyme comme dans l'exemple ci-dessus pour autoriser uniquement les nombres positifs dans le champ de saisie.

16voto

shwet dalal Points 1069

Dans la zone de texte, écrivez ce code onkeypress="return isNumberKey(event)" et la fonction pour cela est juste en dessous.

<script type="text/javascript">
function isNumberKey(evt)
{
          var charCode = (evt.which) ? evt.which : event.keyCode;
          if (charCode != 46 && charCode > 31 
            && (charCode < 48 || charCode > 57))
             return false;

          return true;
}
</script>

9voto

Veuillez utiliser le DataType attribut. Celui-ci acceptera des valeurs négatives. L'expression régulière ci-dessous permettra d'éviter cela :

   [DataType(DataType.PhoneNumber,ErrorMessage="Not a number")]
   [Display(Name = "Oxygen")]
   [RegularExpression( @"^\d+$")]
   [Required(ErrorMessage="{0} is required")]
   [Range(0,30,ErrorMessage="Please use values between 0 to 30")]
    public int Oxygen { get; set; }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X