web-dev-qa-db-fra.com

Le champ doit être un nombre. Comment changer ce message dans une autre langue?

Comment puis-je changer ces messages pour tous les champs int afin qu'au lieu de dire:

The field must be a number en anglais, cela montre:

El campo tiene que ser numerico en espagnol.

Y a-t-il un moyen?

37
Diego_DX

S'il vous arrive d'utiliser ASP.NET MVC 4, consultez cet article:

Localisation des messages d'erreur par défaut dans ASP.NET MVC et WebForms

Fondamentalement, vous devez ajouter le morceau de code suivant dans votre méthode Application_Start() dans Global.asax:

 ClientDataTypeModelValidatorProvider.ResourceClassKey = "Messages";
 DefaultModelBinder.ResourceClassKey = "Messages";

Cliquez avec le bouton droit sur votre projet ASP.NET MVC dans l'Explorateur de solutions dans Visual Studio et sélectionnez Add => Add ASP.NET Folder => App_GlobalResources.

Ajoutez maintenant un .resx fichier dans ce dossier appelé Messages.resx.

Enfin, ajoutez les ressources de chaîne suivantes dans ce .resx fichier:

Name                   Value
====                   =====
FieldMustBeDate        The field {0} must be a date.
FieldMustBeNumeric     The field {0} must be a number.
PropertyValueInvalid   The value '{0}' is not valid for {1}.
PropertyValueRequired  A value is required.

Vous devriez être prêt à partir.

Notez que la valeur qui vous intéresse est le FieldMustBeNumeric. Pour le localiser en espagnol , vous devez ajouter un autre fichier de ressources nommé Messages.es.resx. Dans ce .resx file remplace la valeur de la ressource par:

Name                Value
====                =====
FieldMustBeNumeric  El campo {0} tiene que ser numerico.

Si vous utilisez ASP.NET MVC 3 vers le bas, cette solution peut vous aider à obtenir le même résultat: https://stackoverflow.com/a/2551481/114029

64
Leniel Maccaferri

vous pouvez définir votre message personnalisé pour votre validation.

 [RegularExpression("\d{9}",ErrorMessage="El campo tiene que ser numerico")]
 public decimal UnitPrice { get; set; } 
7
M.Azad

Si vous souhaitez spécifier un message personnalisé pour chaque entier, double et float. vous pouvez utiliser l'attribut de plage avec chaîne comme ci-dessous.

    [Required(ErrorMessageResourceType = typeof(Global), ErrorMessageResourceName = "YearOfEstablishmentRequired")]
    [Range(0, int.MaxValue, ErrorMessageResourceType = typeof(Global), ErrorMessageResourceName = "ValidYearOfEstablishment")]
    [Display(Name = "Year Of Establishment")]
    public string YearOfEstablishment { get; set; }

Maintenant, comme ci-dessus, vous pouvez spécifier un message personnalisé pour chaque propriété.

0
Dilip0165