Question

mon objet a champ avec le type de données int. quand je mets en forme html dans cette lettre textbox numéroter le validateur Le champ doit Say être un nombre. Comment puis-je modifier ces messages comme celui-ci

 [Required(ErrorMessage = "Введите название")]
    [DisplayName("Название")]
    public int age { get; set; }
Était-ce utile?

La solution

Je ne l'ai pas trouvé un clean moyen d'y parvenir en utilisant les annotations de données. Une façon serait d'écrire un liant modèle personnalisé, mais cela semble être beaucoup de travail à faire pour une tâche simple.

Une autre façon d'y parvenir est d'ajouter un dossier App_GlobalResources à votre application ASP.NET. Ajouter un fichier de ressources appelé Messages.resx contenant une ressource de chaîne de PropertyValueRequired.

PropertyValueRequired = "Some custom error message"

Dans votre Application_Start enregistrer la clé de classe de ressource:

protected void Application_Start()
{
    RegisterRoutes(RouteTable.Routes);
    DefaultModelBinder.ResourceClassKey = "Messages";
}

Notez que ASP.NET MVC 2 utilise la PropertyValueInvalid au lieu de la clé des ressources PropertyValueRequired.

OMI en utilisant les annotations de données pour effectuer une logique de validation est limitée (peut-être dans cela va changer .NET 4). Si vous voulez avoir un contrôle total sur la logique de validation, je vous recommande d'utiliser une bibliothèque de validation, comme Courant Validation ou xVal .

Autres conseils

Je suis tombé sur le même problème et ont travaillé en spécifiant un RegularExpression qui ne permet que des nombres naturels positifs.

[Required(ErrorMessage = "Введите название")]
[DisplayName("Название")]
[RegularExpression(@"^[0-9]+$", ErrorMessage = "Поле возраст не является числом")]
public int age { get; set; }

Je ne sais pas s'il y a des écroulements à cette solution. Il semble fonctionner très bien pour moi.

PS. Si vous ne voulez pas que des zéros non significatifs utilisent "^[1-9]+[0-9]*$"

En rétrospective: Je dois admettre que ce soit un peu bizarre d'ajouter une expression régulière à un nombre entier

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top