Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.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
C# 无法将会话用户ID强制转换到数据库_C#_Asp.net_Sql Server_Asp.net Mvc - Fatal编程技术网

C# 无法将会话用户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

我试图从会话用户ID中获取当前用户,但出现此错误。”无法将“System.Int32”类型的对象强制转换为“Trinity.Models.tblUser”类型

其中我创建了会话Id:

[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来获取用户,但你需要输入一个数字。