Sto tentando di ottenere la convalida lato server di una proprietà String di Entity Framework da utilizzare. Altre convalide sul lato server come la convalida del tipo di dati e la data richiesta. Le proprietà EF numeriche e temporali funzionano.La convalida lato server di una proprietà stringa RICHIESTA in MVC2 Entity Framework 4 non funziona
Questo in VS 2010, .Net 4.0, MVC2 + Cloud, ADO.Net Entity Framework.
La proprietà String con cui si verificano problemi è associata a una colonna non nullable SQL 2008, Varchar (50).
Quando provo a pubblicare sulla mia azione Create con una stringa vuota per questa proprietà, viene visualizzato l'errore follwing.
Dettagli eccezione: System.Data.ConstraintException: questa proprietà non può essere impostata su un valore nullo.
Quando annuncio sull'azione con uno spazio vuoto, ottengo correttamente un messaggio di convalida del campo richiesto.
Ho provato a utilizzare Annotazioni dati e ClientSideValidation ma sembra che ci siano problemi con ClientSideValidation che funziona su viste parziali e finestre di dialogo jQuery.
Ecco il codice originale generato automaticamente dal framework 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();
}
}
seconda della firma del metodo azione (creare o modificare), l'eccezione può verificarsi prima di entrare nel metodo o nel metodo quando UpdateModel() viene chiamato. L'eccezione interna si trova nella riga sottostante dal file model.designer.cs.
_GradeTypeName = StructuralObject.SetValidValue(value, false);
Sono stato in grado di riprodurlo su una semplice applicazione Web mvc2.
Grazie! Questo è stato un problema per me fino a quando ho trovato il tuo post. – jrob
No, problemo! Sono contento che questo abbia aiutato! – tinesoft
+1 per un'ottima risposta (collegamento, avviso distillato) –