Sur mon projet MVC3, je stocke la prédiction des scores pour le football / football / hockey / … jeu de sport. Donc, une des propriétés de ma classe de prédiction ressemble à ceci:
[Range(0, 15, ErrorMessage = "Can only be between 0 .. 15")] [SsortingngLength(2, ErrorMessage = "Max 2 digits")] [Remote("PredictionOK", "Predict", ErrorMessage = "Prediction can only be a number in range 0 .. 15")] public int? HomeTeamPrediction { get; set; }
Maintenant, j’ai aussi besoin de changer le message d’erreur pour un type de données, int
dans mon cas. Il y en a un par défaut – “Le champ HomeTeamPrediction doit être un nombre.”. Besoin de trouver un moyen de modifier ce message d’erreur. Ce message de validation semble également prendre une prédiction pour la validation à distance.
J’ai essayé l’atsortingbut [DataType]
mais cela ne semble pas être un nombre simple dans l’énumération system.componentmodel.dataannotations.datatype
.
Pour toute validation de numéro, vous devez utiliser différentes validations de gammes selon vos besoins:
Pour entier
[Range(0, int.MaxValue, ErrorMessage = "Please enter valid integer Number")]
pour float
[Range(0, float.MaxValue, ErrorMessage = "Please enter valid float Number")]
pour double
[Range(0, double.MaxValue, ErrorMessage = "Please enter valid doubleNumber")]
Essayez une expression régulière
[RegularExpression("([0-9]+)")] // for 0-inf or [RegularExpression("([1-9][0-9]*)"] // for 1-inf
j’espère que ça aide: D
Utiliser l’expression régulière dans les annotations de données
[RegularExpression("([0-9]+)", ErrorMessage = "Please enter valid Number")] public int MaxJsonLength { get; set; }
Essayez cet atsortingbut:
public class NumericAtsortingbute : ValidationAtsortingbute, IClientValidatable { public override bool IsValid(object value) { return value.ToSsortingng().All(c => (c >= '0' && c <= '9') || c == '-' || c == ' '); } public IEnumerable GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { var rule = new ModelClientValidationRule { ErrorMessage = FormatErrorMessage(metadata.DisplayName), ValidationType = "numeric" }; yield return rule; } }
Et vous devez également enregistrer l’atsortingbut dans le plug-in du validateur:
if($.validator){ $.validator.unobtrusive.adapters.add( 'numeric', [], function (options) { options.rules['numeric'] = options.params; options.messages['numeric'] = options.message; } ); }
public class IsNumericAtsortingbute : ValidationAtsortingbute { protected override ValidationResult IsValid(object value, ValidationContext validationContext) { if (value != null) { decimal val; var isNumeric = decimal.TryParse(value.ToSsortingng(), out val); if (!isNumeric) { return new ValidationResult("Must be numeric"); } } return ValidationResult.Success; } }