Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 ASP.net MVC 3基于模型逻辑自定义Html.ValidationMessageFor_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 3 ASP.net MVC 3基于模型逻辑自定义Html.ValidationMessageFor

Asp.net mvc 3 ASP.net MVC 3基于模型逻辑自定义Html.ValidationMessageFor,asp.net-mvc-3,Asp.net Mvc 3,我已经阅读了与此类似的几个问题,涉及到如何定制@Html.ValidationMessageFor,但没有一个涉及到我要做的事情 我正在处理的当前表单正在数据库中编辑用户。在此表单中,我需要检查输入的电子邮件是否已用于其他用户。我有逻辑,但我没有的是,如果他们使用已经在使用的电子邮件,页面上会显示自定义验证消息 控制器代码: [HttpPost] public ActionResult EditUser(int id, EditUserModel model) {

我已经阅读了与此类似的几个问题,涉及到如何定制
@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);
    }

这是在控制器级别完成的吗?

根据您的逻辑,如果用户正确填写表单并提供重复的电子邮件,电子邮件检查部分将永远不会执行

您可以做的是更改
操作结果

  [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 
}

还可以看看

非常好。谢谢你的逻辑布局,这解决了我的问题。