J'utilise System.componontModel.DataNotations pour valider mes objets de modèle. Comment puis-je remplacer les messages Attributs standard (requis et StringLength) sans fournir un attribut errorressage à chacun d'eux ou sous les classeurs? P>
3 Réponses :
Vous pouvez utiliser Par exemple: P> [Range(0, 100, ErrorMessage = "Value for {0} must be between {1} and {2}")]
public int id;
Vrai. Mais existe-t-il un moyen de remplacer le message par défaut à la fois?
@Fitzchakyitzchaki Avez-vous déjà atteint cela?
Écrire un nouveau post car j'ai besoin de plus de formatage que les commentaires fournis.
regarder validationAttribute strong> - classe de base d'attributs de validation. p> Si une erreur de validation est produite, le message d'erreur sera être créé par la méthode: p> Suivant regardez sur internal static string RangeAttribute_ValidationError
{
get
{
return ResourceManager.GetString("RangeAttribute_ValidationError", resourceCulture);
}
}
Merci beaucoup de veton. La dernière partie que vous avez mentionnée, j'ai totalement manqué.
Je ne comprends pas comment les fichiers de ressources devraient-ils être nommés (et où placés) pour remplacer ResourceManager de Dataannotations.dll.
pour void InitializeDataAnnotationsCulture()
{
var sr =
typeof(ValidationAttribute)
.Assembly
.DefinedTypes
//ensure class name according to current .NET you're using
.Single(t => t.FullName == "System.SR");
var resourceManager =
sr
.DeclaredFields
//ensure field name
.Single(f => f.IsStatic && f.Name == "s_resourceManager");
resourceManager
.SetValue(null,
DataAnnotationsResources.ResourceManager, /* The generated RESX class in my proj */
BindingFlags.NonPublic | BindingFlags.Static, null, null);
var injected = resourceManager.GetValue(null) == DataAnnotationsResources.ResourceManager;
Debug.Assert(injected);
}