J'essaie d'obtenir la validation côté serveur d'une Entity Framework String Property pour qu'elle fonctionne. D'autres validations côté serveur, telles que la validation de type de données et les propriétés de date et d'heure numériques requises, fonctionnent.La validation côté serveur d'une propriété String OBLIGATOIRE dans MVC2 Entity Framework 4 ne fonctionne pas
Ceci dans VS 2010, .Net 4.0, Cloud MVC2 +, Entité Framework ADO.Net.
La propriété de chaîne avec laquelle je rencontre des problèmes est mappée à une colonne SQL 2008, Varchar (50) non-nullable.
Lorsque j'essaie de publier sur mon action Créer avec une chaîne vide pour cette propriété, j'obtiens l'erreur suivante.
Détails d'exception: System.Data.ConstraintException: Cette propriété ne peut pas être définie sur une valeur nulle.
Lorsque je poste sur l'action avec un espace vide, j'obtiens avec succès un message de validation de champ obligatoire.
J'ai essayé d'utiliser Data Annotations et ClientSideValidation, mais il semble y avoir des problèmes avec ClientSideValidation travaillant sur les vues partielles et les boîtes de dialogue jquery.
Voici le code autogénéré original provenant de l'infrastructure de l'entité.
[EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
[DataMemberAttribute()]
public global::System.String GradeTypeName
{
get
{
return GradeTypeName;
}
set
{
OnGradeTypeNameChanging(value);
ReportPropertyChanging("GradeTypeName");
_GradeTypeName = StructuralObject.SetValidValue(value, false);
ReportPropertyChanged("GradeTypeName");
OnGradeTypeNameChanged();
}
}
En fonction de la signature de la méthode d'action (créer ou modifier), l'exception peut se produire avant d'entrer dans la méthode ou dans la méthode lorsque UpdateModel() est appelée. L'exception interne est à la ligne ci-dessous du fichier model.designer.cs.
_GradeTypeName = StructuralObject.SetValidValue(value, false);
J'ai été capable de reproduire ceci sur une simple application web mvc2.
Merci! Cela a été un problème pour moi jusqu'à ce que j'ai trouvé votre message. – jrob
Non, problemo! Je suis content que cela ait aidé! – tinesoft
+1 pour une très bonne réponse (lien, conseils distillés) –