我目前正在制作一个项目,用户应该能够将其他用户添加到群组中。我创建了一个文本框,用户可以在其中键入要添加的其他用户的电子邮件地址。我的计划是将此文本与数据库中的表进行比较,以查看它是否存在。
这就是我试图在我的控制器中执行此操作的方法:
[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
包含正确的电子邮件地址。所以我从文本框中获得了正确的输入。但是我不明白如何将我的输入与数据库进行比较。
答案 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
会将数据库值和用户值更改为所有大写字母并以这种方式进行比较。