Linq-to-Sql に、データ注釈属性と xVal への参照でマークされた部分クラスを持つモデル クラスがあります。
ビューをモデルに直接バインドすると、xVal によって生成された JS とサーバー側の二重チェックの両方で、すべてがうまく機能します。
私のビューの多くは 1 つの特定のモデルへの入力を受け付けないため、ビュー モデル クラスを設定しています。モデル インスタンス全体を公開する代わりに、ビューで設定できる/必要なプロパティをモデルに公開します。
// 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;
}
}
このアプローチはビュー モデル クラスを正しく設定し、リポジトリはレコードを正しく設定できます。
ただし、検証をまったく通過しません。発行されたクライアント コードを確認しましたが、xval の検証配列は空です。さらに、IsValid のサーバー側チェックは常に true です。
このように検証のためにビューモデルのプロパティを介してデータ注釈をプルさせることはできますか、それとも別の方法で行う必要がありますか?