私は次のことをしようとしています。
デフォルトのモデル バインダーを使用して、クエリ文字列値からオブジェクトをバインドします。
それが失敗した場合は、Cookie 値からオブジェクトをバインドしようとします。
ただし、このオブジェクトでデータ注釈を使用しており、次の問題があります。
- クエリ文字列パラメーターがない場合、既定のモデル バインダーは必須フィールドの検証エラーを登録しません。プロパティ自体がクエリ文字列コレクションに含まれていない場合、これらのバリデーターも起動しないようです。この動作を変更するにはどうすればよいですか? クエリ文字列に含まれていない場合、必須フィールドをエラーにしたいと思います。
- モデルの検証エラーが発生した場合は、Cookie からモデルを読み込み、オブジェクトを再検証したいと考えています。自分で入力したオブジェクトをモデル バインダーで検証する方法がわかりません。
これが私がこれまでに持っているものです。
public class MyCarBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var myCar = base.BindModel(controllerContext, bindingContext);
if (!bindingContext.ModelState.IsValid)
{
myCar = MyCar.LoadFromCookie();
// Not sure what to do to revalidate
}
return myCar;
}
}
これを適切に行う方法についての助けをいただければ幸いです。