0

これに似た質問をいくつか読んで、カスタマイズを扱って@Html.ValidationMessageForいますが、私がやろうとしていることには触れていません。

私が取り組んでいる現在のフォームは、データベース内のユーザーを編集しています。このフォーム内で、入力されている電子メールが別のユーザーにまだ使用されていないことを確認する必要があります。ロジックはありますが、持っていないのは、既に使用されている電子メールを使用している場合にページに表示されるカスタム検証メッセージです。

コントローラーコード:

    [HttpPost]
    public ActionResult EditUser(int id, EditUserModel model)
    {
        if (ModelState.IsValid)
        {
            tbl_Users editedUser = tblUsers.EditUser(id, model, HttpContext.User.Identity.Name);
            tblHSDA.EditHSDAS(id, editedUser, model.hsdas, HttpContext.User.Identity.Name);
            return Redirect("~/UserManage/ListActiveUsers");
        }

        if (tblUsers.ValidateEmailInUse(model.Email))
        {
            // change validation message and return View(model);
        }

        tbl_Users tbl_users = db.tbl_Users.SingleOrDefault(item => item.User_id == id);

        ViewBag.hsdas = tblHSDA.GetHSDANameAlpha();
        ViewBag.Username = tbl_users.Username;

        return View(model);
    }

これはコントローラーレベルで行われますか?

4

1 に答える 1

1

ロジックに従って、ユーザーがフォームに正しく入力し、重複した電子メールを提供した場合、電子メールチェック部分は実行されません

あなたができることは、ActionResult好きなものを変えることです

  [HttpPost]
    public ActionResult EditUser(int id, EditUserModel model)
    {
        if (ModelState.IsValid)
        {
            if(!CheckEmail(model.Email)){
            tbl_Users editedUser = tblUsers.EditUser(id, model,  HttpContext.User.Identity.Name);

            tblHSDA.EditHSDAS(id, editedUser, model.hsdas, HttpContext.User.Identity.Name);
            return Redirect("~/UserManage/ListActiveUsers");
           }else{
             ModelState.AddModelError("Email","Email provided is already in use...")
         }
        }       

        tbl_Users tbl_users = db.tbl_Users.SingleOrDefault(item => item.User_id == id);
        ViewBag.hsdas = tblHSDA.GetHSDANameAlpha();
        ViewBag.Username = tbl_users.Username;
        return View(model);
    }

private bool CheckEmail(string email){
 //email check logic
 // return true or false 
}

http://msdn.microsoft.com/en-us/library/gg508808%28v=vs.98%29.aspxもご覧ください。

于 2013-03-04T20:25:24.103 に答える