7
votes

Pourquoi l'attribut ASP.NET MVC Attribut prend-il un type?

Je me demandais simplement pourquoi l'attribut de validation de la plage peut prendre un type et deux chaînes comme paramètres? Est-ce pour valider des chaînes contre une énumération ou quelque chose comme ça?

Aussi ce que j'essaie de faire est de trouver un moyen facile de valider une chaîne de 3 caractères qui doit être présente dans un énumé, tout sugestions?

merci, Alex.


4 commentaires

Comment / pourquoi les 3 chaînes de caractère doivent-elles être dans une énorme?


J'essayais de stocker l'état d'adresse comme une chaîne de 3 caractères, mais je l'ai modifié à un octet maintenant et je suis juste en train de modifier le type de données pour correspondre à celui de l'ENUM.


voir ma réponse. Je ne sais pas comment l'enum fonctionnerait mais que la chaîne de caractères 3 pourrait fonctionner si vous savez comment string.cacher () les compare. En outre, cette validation ne fonctionnerait que sur le côté sévère. Vous pouvez ajouter votre propre classe personnalisée qui implémente icomparable pour vos chaînes.


NOTEZ AUSSI: RANGEATTRIBUT fait du System.componentmodel.dataannotations.dll Pas une partie de ASP.NET MVC.


6 Réponses :


18
votes

J'ai trouvé la gamme CTOR que vous avez mentionné Fishy. Ne pouvait pas aider mais enquêter. (Alors j'ai écrit cette réponse comme un journal tout en enquêtant.)

de MSDN p> xxx pré>

Remarque: MSDN dit que le type code> doit être icomparable code>. Et, leur exemple de description dit sa comparaison de date lorsque ce n'est pas! >

[Range(typeof(char), "a", "g")]


4 commentaires

@alex votre accueil. En fait, je ne travaillais pas avant le mais attendez , qui est quand j'ai essayé de désactiver la validation du client et que cela fonctionnait! = P


@gideon: Je sais que ceci a été posté il y a longtemps, mais toujours: beaucoup remercient pour l'explication claire! J'ai rencontré le problème aujourd'hui et je n'ai pas pu trouver une explication appropriée .. :)


Vous n'avez pas à désactiver complètement la validation côté client. Vous pouvez simplement supprimer la validation de la plage côté client pour votre zone de texte spécifique à la place. Comme ceci: $ ("yourtextbox '). Règles (" supprimer "," gamme ");


Cela n'accepte pas "20" car il le lit comme "0020", pas "2020". Les années à deux chiffres ne sont plus compatibles avec de nombreuses choses en code, en raison de la bogue Y2K.



5
votes

J'ai également remarqué que la validation de JQuery ne fonctionne pas bien avec le validateur de la plage ASP MVC (il semble que le plug-in JQuery Validation nécessite des chiffres de la plage).

Une solution simple consiste à désactiver la validation pour les champs spécifiques. The Server Side Validaton fonctionnera de toute façon.

L'exemple suivant supprimera la règle "plage" de tous les champs d'entrée avec une classe "date": xxx


0 commentaires

3
votes

J'ai fini par créer un daterangeattribute personnalisé comme décrit ici . Vous n'obtenez pas la validation du côté client, mais vous pouvez personnaliser cela pour répondre à vos besoins et sans gâcher avec JavaScript. Voici le code et comment l'utiliser: xxx

daterange est simplement: xxx


0 commentaires

3
votes

Moi aussi j'ai repris cela assez tard :)

Sûrement L'attribut CustomValidation a été construit pour ces circonstances?

De cette façon, nous n'avons pas besoin de modifier la validation du côté client. De plus, il est avantageux dans le fait que cela nous permet d'appliquer une plage configurable.

par exemple: xxx


0 commentaires

-3
votes

gars! Voici une autre solition. Je l'ai trouvé ici: Validation MVC inférieure / supérieure à celle d'une autre valeur

public class FinanceModel{
   public int MinimumCost {get;set;}

   [GreaterThan("MinimumCost")]
   public int MaximumCost {get;set;}
}


1 commentaires

Ce que vous avez, c'est pour définir deux paramètres différents et voir comment l'on se compare à l'autre, non pour vérifier un seul paramètre dans une plage de jeu.



1
votes

Vous pouvez utiliser la validation de la plage de date personnalisée ci-dessous qui compare la valeur de la date à fournir des propriétés de la date min et maximale ou mentionnée. Il démontre également le support et l'intégration de la validation du côté client.

CustomDaterange xxx

Intégration client xxx

démo

modèle xxx < / pré>

Commandes de date avec validations

Télécharger le Mise en œuvre complète de ici .


0 commentaires