首页 > 解决方案 > ModelState.AddModelError 这里我给出的错误消息没有显示

问题描述

ModelState.AddModelError将相同的用户名发布到数据库时不起作用

在这里,如果用户名不匹配,它将在数据库中创建一个新用户

public ActionResult Signup(User user)
{

    using (var context = new dbTournamentEntities())
    {
        bool check = context.Users.Any(m => m.UserName == user.UserName);

        if (check)
        {
            ModelState.AddModelError("", "User Already Exist Try Different User Name");
        }
        else
        {
            var hashpass = HashPassword(user.Password);
            user.Password = hashpass;
            context.Users.Add(user);
            context.SaveChanges();
        }
    }
    return RedirectToAction("Login");
}

标签: c#asp.net-mvc

解决方案


如果变量检查具有错误值,则 ModelState.AddModelError 不起作用的唯一原因。

您可以寻找两种可能的情况

  1. 如果您的数据库上下文在用户中没有价值。
  2. 如果您的数据库上下文中存在同名用户,那么这是区分大小写的问题,请尝试同时设置大写和小写,然后检查是否相等。

    bool check = context.Users.Any(m => m.UserName.ToUpper() == user.UserName.ToUpper());
    

推荐阅读