私のasp.net mvcプロジェクトのユーザーオブジェクトについて、パスワードが有効かどうか、2つの一致するパスワードが入力されたかどうかなどを確認するカスタムモデルバインダーを作成しました.
ログイン名は一意である必要がありますが、モデルバインダーでそれを確認できるかどうか疑問に思っていましたか、それともこれは悪い習慣と見なされていますか?
問題は、コントローラーに到達する前にバインダーが呼び出されることです。そのため、dataContext の 2 つのインスタンスが浮かび上がり、データベースへの複数の接続が発生します。そのための種類のファクトリを設定できると思います。
これは、コントローラーで現在行っていることのコード スニペットです。
// POST: /Users/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Users user)
{
myDataContext db = new myDataContext();
if (!ViewData.ModelState.IsValid)
{
return View(user);
}
Users testUser = db.Users.SingleOrDefault(p => p.LoginNaam == user.LoginNaam);
if (testUser != null) { //Error stuff here }
}