检查数据库中的用户名

时间:2016-05-05 13:06:09

标签: c# asp.net entity-framework visual-studio

我目前正在制作一个项目,用户应该能够将其他用户添加到群组中。我创建了一个文本框,用户可以在其中键入要添加的其他用户的电子邮件地址。我的计划是将此文本与数据库中的表进行比较,以查看它是否存在。

这就是我试图在我的控制器中执行此操作的方法:

[HttpPost]
public ActionResult Manage(GroupManage gm)
{
    HttpCookie groupId = new HttpCookie("selectBoxValue");
    groupId = Request.Cookies["selectBoxValue"];
    int user = Convert.ToInt32(groupId.Value);

    if (gm.addUser == gm.ApplicationUser.Email)
    {
        var groupmember = new GroupUser { ApplicationUserId = gm.ApplicationUser.Id, GroupId = user };
        db.GroupUsers.Add(groupmember); 
        db.SaveChanges();
    }

    return View();
}

运行时我得到错误:

  

对象引用未设置为对象的实例。

在我的调试器中,ApplicationUser.Email的值为null(我在if语句中用来比较)。虽然gm.addUser包含正确的电子邮件地址。所以我从文本框中获得了正确的输入。但是我不明白如何将我的输入与数据库进行比较。

1 个答案:

答案 0 :(得分:1)

if (db.ApplicationUser.Any(x => x.EmailAdress.ToUpper() == gm.addUser.ToUpper())
{
    // do something
}

如果数据库表ApplicationUser中的任何电子邮件地址与gm.addUser匹配,则执行某些操作

.ToUpper用于提高比较效率..因此,如果您的数据库中有电子邮件地址 test@email.com ,则有人输入 TEST @ EMAIL .COM 将传递并将其添加到您的数据库..但.ToUpper会将数据库值和用户值更改为所有大写字母并以这种方式进行比较。