C# 无法将会话用户ID强制转换到数据库
我试图从会话用户ID中获取当前用户,但出现此错误。”无法将“System.Int32”类型的对象强制转换为“Trinity.Models.tblUser”类型 其中我创建了会话Id:C# 无法将会话用户ID强制转换到数据库,c#,asp.net,sql-server,asp.net-mvc,C#,Asp.net,Sql Server,Asp.net Mvc,我试图从会话用户ID中获取当前用户,但出现此错误。”无法将“System.Int32”类型的对象强制转换为“Trinity.Models.tblUser”类型 其中我创建了会话Id: [HttpPost] public ActionResult Authorise(tblUser user) { using (var db = new TrinityEntities()) { var userEmail = db.tblUsers.FirstOrDefault(x
[HttpPost]
public ActionResult Authorise(tblUser user)
{
using (var db = new TrinityEntities())
{
var userEmail = db.tblUsers.FirstOrDefault(x => x.Email == user.Email);
var userPassword = db.tblUsers.FirstOrDefault(y => y.Password == user.Password);
//check login incorrect
if (userEmail == null || userPassword == null)
{
ViewBag.LoginIncorrect = "E-mail or Password not correct";
return View("Index", user);
}
else
{
Session["UserID"] = userEmail.Id;
return RedirectToAction("Index", "Home");
}
}
}
我得到错误的地方:
public ActionResult Index()
{
if (Session["UserID"] == null)
{
return Redirect("/");
}
var currentUser = (Models.tblUser) Session["UserID"];
using (var db = new Models.ChatContext())
{
ViewBag.allUsers = db.Users.Where(u => u.FirstName != currentUser.FirstName).ToList();
}
ViewBag.currentUser = currentUser;
return View();
}
您只存储ID(一个数字),但当您读回它时,您期望的是整个用户—这是行不通的。相反,您需要使用ID重新加载用户:
var currentUserId = Session["UserID"];
var user = db.tblUsers.FirstOrDefault(x => x.Id == currentUserId);
因此,你输入了一个
int
,你希望在另一边显示为tblUser
?我试图获取当前用户的用户ID,使其不显示为可能的聊天对象。我认为你不理解我的评论。“因此,你输入了int,你希望显示为tblUser”我希望它能通过会话UserID@patrickhoffman来获取用户,但你需要输入一个数字。