Ich versuche serverseitige Validierung einer Entity Framework String-Eigenschaft zu arbeiten. Andere serverseitige Validierungen wie Datentypvalidierung und erforderliche dateTime- und numerische EF-Eigenschaften funktionieren.Server-seitige Validierung einer Required String-Eigenschaft in MVC2 Entity Framework 4 funktioniert nicht
Dies in VS 2010, .NET 4.0, MVC2 + Cloud, ADO.Net Entity Framework.
Die String-Eigenschaft, mit der ich Probleme habe, ist einer SQL 2008, Varchar (50) nicht Nullable-Spalte zugeordnet.
Wenn ich versuche, meine Create-Aktion mit einer leeren Zeichenfolge für diese Eigenschaft zu veröffentlichen, erhalte ich den folgenden Fehler.
Ausnahmedetails: System.Data.ConstraintException: Diese Eigenschaft kann nicht auf einen Nullwert festgelegt werden.
Wenn ich die Aktion mit einem Leerzeichen posten, erhalte ich erfolgreich eine erforderliche Feldüberprüfungsmeldung.
Ich habe versucht, Datenanmerkungen und ClientSideValidation zu verwenden, aber es scheint Probleme mit ClientSideValidation zu geben, die an Teilansichten und jquery Dialogen arbeiten.
Hier ist der ursprüngliche automatisch generierte Code aus dem Entity-Framework.
[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();
}
}
Je nach Unterzeichnung des Aktionsmethode (CREATE oder EDIT), kann die Ausnahme auftreten, bevor sie in dem Verfahren treten oder innerhalb des Verfahrens, wenn Update() aufgerufen wird. Die innere Ausnahme befindet sich in der Zeile unterhalb der Datei model.designer.cs.
_GradeTypeName = StructuralObject.SetValidValue(value, false);
Ich konnte dies auf einer einfachen MVC2-Webanwendung reproduzieren.
Danke! Das war ein Problem für mich, bis ich deinen Beitrag gefunden habe. – jrob
Nein, problemo! Ich bin froh das hat geholfen! – tinesoft
+1 für eine sehr gute Antwort (Link, destillierter Rat) –