Ich habe Modellklassen in Linq-zu-Sql mit partiellen Klassen mit Daten Annotationsattribute und einen Verweis auf xVal markiert.ASP.NET MVC Model/ViewModel Validierung
Wenn ich eine Ansicht direkt an ein Modell binde, funktioniert alles super, sowohl die von xVal generierte JS als auch die serverseitige Doppelprüfung.
Viele meiner Ansichten verwenden keine Eingabe für ein bestimmtes Modell. Daher richte ich View Model-Klassen ein. Anstatt eine ganze Modellinstanz zu exponieren, exponiere ich Eigenschaften in dem Modell, das ich durch die Ansicht einstellen kann/muss.
// foo model
public class Foo {
public string FooField { ... }
public Bar Bar { ... }
}
// bar model, where bar is a parent relationship of foo in the db
public class Bar {
public string BarField { ... }
}
// view model stuff
public class FooViewModel {
private Foo foo;
public FooViewModel() {
foo = new Foo() { Bar = new Bar() };
}
public Foo Model {
get { return foo; }
set { foo = value; }
}
public string BarField {
get { return foo.Bar.BarField; }
set { foo.Bar.BarField = value; }
}
public string ExtraViewModelField {
get; set;
}
}
Dieser Ansatz füllt die View-Modellklasse korrekt auf und das Repository kann den Datensatz korrekt ausfüllen.
Es zieht jedoch die Validierung überhaupt nicht durch. Ich habe den ausgegebenen Client-Code angeschaut und das Validierungs-Array ist leer für xval. Darüber hinaus ist die serverseitige Überprüfung für IsValid immer wahr.
Kann ich die Datenanmerkungen durch die Eigenschaften des Ansichtsmodells zur Validierung ziehen lassen, oder sollte ich dies auf eine andere Weise tun?
Bitte markieren Sie die Antwort auf diese, wenn es Ihre Frage beantwortet –