2010-06-07 7 views
1

Avec mvc de asp.net vous pouvez utiliser l'annotation [Obligatoire (ErrorMessage = "Ceci est nécessaire")]obtenir des données-annotation sur la base de données errormessage

Comment puis-je créer quelque chose comme ceci:

[ Obligatoire (errormessage = "ERRORXX")]

Je peux donc rechercher dans une base de données ce qu'est cet ERRORXX et l'afficher sur mon formulaire. Maintenant, mon formulaire affiche ERRORXX. Comment puis-je créer quelque chose qui résout mon problème?

Thx!

Répondre

0

Je pense que vous voulez dire que vous voulez lire/utiliser des déclarations d'attributs pour une propriété donnée? Si oui, vous pouvez créer votre propre classe RequiredAttribute (pour permettre l'ajout de nouvelles propriétés ou de propriétés plus appropriées). Voir: Attributes Tutorial

+0

Puis-je hériter de la classe requiredAttribute? – Masna

+0

Woops, je pense que j'ai raté le point de votre question ... Désolé. Bien que, non, généralement vous ne pourrez pas prolonger une implémentation d'attribut puisque par convention ils sont marqués comme scellés. – Reddog

+0

Les propriétés sur les attributs devront être des constantes fixes car elles sont compilées dans la bibliothèque. Le premier lien par @Leniel montre comment j'accomplirais ce que vous voulez - via des fichiers de ressources. – Reddog

3

Juste une idée: pourquoi ne pas tirer les messages d'erreur d'un resx file? Je pense que c'est la façon habituelle de le faire. Il vous permet même de localiser vos messages d'erreur facilement.

Je pense qu'en utilisant un fichier de ressources (fichier resx), il est encore plus facile de changer les messages d'erreur plus tard. Un fichier resx peut être ouvert et édité dans Word Pad par exemple. Vous n'avez pas besoin d'accéder à une base de données avec nom d'utilisateur/mot de passe, l'interroger, etc.

Localizing ASP.NET MVC Validation

Globalizing ASP.NET MVC Client Validation

Jetez un oeil ici aussi:

Model Validation & Metadata in ASP.NET MVC 2

Customizing ASP.NET MVC 2 - Metadata and Validation

1

La route par défaut à prendre est avec les ressources. Cependant, je comprends votre douleur :) La façon dont j'ai réussi est un peu inhabituel, mais je vais vous donner un aperçu rapide. Dans notre projet, l'utilisation de fichiers de ressources n'est pas une option car elle est trop limitée pour nos objectifs, dont je ne vous ennuierai pas maintenant! :) À son principe le plus élémentaire, nous définissons la propriété errorMessage de l'attribut de validation sur une sorte de «clé», puis nous l'utilisons simplement comme un moyen de rechercher la réponse correcte (langagière) dans notre base de données CMS, lorsque la validation échoue (dans notre cas en utilisant MVC, quand nous mettons à jour le modèle et vérifions l'état - tout au niveau du contrôleur). Ceci est le même principe que l'utilisation des ressources (en spécifiant "ErrorMessageResourceName" et "ErrorMessageResourceType"), mais vous pouvez en faire ce que vous voulez. Pour être clair, nous avons à l'origine étendu le RequiredAttribute (à titre d'exemple) avec nos propres éléments, y compris en mettant des arguments correctement nommés pour nous permettre d'extraire une valeur CMS dans la base de données plus tard. Pour être plus précis, nous utilisons MVC et HtmlHelpers personnalisés pour afficher nos propres ValidationControls, qui consomment en fin de compte les valeurs personnalisées de nos annotations personnalisées, etc. - Rien de tout cela n'affecte cependant le principe de l'abaissement. Utilisez "errorMessage", ou quelque chose comme ça, comme un moyen de rechercher le message réel d'où vous voulez, et quand vous voulez.

Questions connexes