我正在使用Visual Studio而且我是新手。我正在尝试执行以下操作:
我已经工作了好几个小时而且我一直在犯错误。主要是我想我不明白User.Identity.GetUserId();工作,因为我试图比较它返回到subject表中的userID的值,因为我假设它从AspNetUsers表中获取ID,所以我尝试匹配它们。当我尝试访问主题页面时出现错误:"其他信息:DbComparisonExpression需要具有可比类型的参数。"它们都是相同的类型(nvarchar),在此之前它们是不同的数据类型,我一直遇到比较问题,这就是为什么我改变它们来测试它。
所以无论如何我认为问题是我不知道User.Identity.GetUserId();工作,究竟是什么回报。我正在假设它从AspNetUsers表返回UserId,不知道为什么,但可能是为什么我会得到比较错误。
这是我的代码的一部分:
SubjectsContext1 db = new SubjectsContext1(); if (User.Identity.IsAuthenticated) { //check if user is logged in var userInfo = User.Identity.GetUserId(); //get logged in user info //find logged in user info from Subjects table (errors here) var userData = (from c in db.Subjects where c.studentID.Equals(userInfo) select c).FirstOrDefault(); var email = userData.email; var tutorStatus = userData.tutor; if(tutorStatus == 0) { ViewBag.Message = "A list of the subjects you take."; return View(); } else { ViewBag.Message = "A list of the subjects you teach."; return View(); } } else { ViewBag.Message = "You must be logged in to view this page!"; return View(); }
我只是想了解如何获取登录用户的信息,以便从我制作的主题表中获取他们的信息。
答案 0 :(得分:2)
我不知道User.Identity.GetUserId();工作,到底是什么 返回
它从您的身份用户表(在您的案例中为dbo.AspNetUsers表)中返回登录用户的用户ID,该表是字符串。
确保在dbo.Students表中为StudentId使用相同的数据类型(字符串),从SQL Server中的“表设计”重新确认。