这是我的 ViewModel ,其中我添加了两个表格。 Account_Detail (我从此表中登录)。 Basic_Detail (我需要在用户登录后通过会话检索此表中的数据)
public class BasicAccountView
{
public Account_Details Account_Details { get; set; }
public Basic_Details Basic_Details { get; set; }
}
以下是我的登录代码,我在各自的会话变量中都有名称和 ID
public ActionResult Index(Account_Details log)
{
var obj = db.Account_Details.Where(u => u.Name.Equals(log.Name) && u.Password.Equals(log.Password)).FirstOrDefault();
Session["Account"] = log;
if (obj != null)
{
Session["loginid"] = obj.U_ID;
Session["name"] = obj.Name;
Session["email"] = obj.Email;
return RedirectToAction("Verify");
}
else
{
return View();
}
}
登录代码一切正常并开始运行,即使会话工作正常,他们正在检索登录用户的名称。虽然,情况就像,我需要加入此帐户和基本表,以便我可以从 Basic_Detail 表中获取登录用户的详细信息。这是我的加入查询,但它不起作用,显示没有。
public ActionResult Verify()
{
var Result = (from o in db.Basic_Details
join od in db.Account_Details on o.User_ID equals od.U_ID
where o.FirstName == this.HttpContext.User.Identity.Name
select new BasicAccountView { Basic_Details = o, Account_Details = od }).ToList();
//var Result = (from o in db.Basic_Details
// join od in db.Account_Details on o.User_ID equals od.U_ID
// select new Basic_Details { FirstName = od.Name }).ToList();
return View(Result);
}
验证操作
的视图@model IEnumerable<Matrimonial.Models.BasicAccountView>
@{
ViewBag.Title = "Verify";
Layout = "~/Views/Shared/Main.cshtml";
}
<p>
@Html.ActionLink("Create New", "Create")
</p>
@foreach(var item in Model)
{
<td>@item.Basic_Details.FirstName</td>
<td>@item.Basic_Details.LastName</td>
<td>@item.Basic_Details.MaritalStatus</td>
<td>@item.Basic_Details.Religion</td>
}
更新 - 问题已解决 只需将Session [“loginid”]添加到其他变量中,然后将其与要从中检索数据的其他表UserID进行比较。我希望它能帮助其他人解决同样的问题。
public ActionResult Verify()
{
BasicAccountView bav = new BasicAccountView();
int userId = (int)Session["loginid"];
var Result = from o in db.Basic_Details
join od in db.Account_Details on o.User_ID equals od.U_ID
where o.User_ID == userId
select new BasicAccountView { Basic_Details = o, Account_Details = od };
//var Result = (from o in db.Basic_Details
// join od in db.Account_Details on o.User_ID equals od.U_ID
// select new Basic_Details { FirstName = od.Name }).ToList();
return View(Result);
}
答案 0 :(得分:0)
您应该检查&#34; this.HttpContext.User.Identity.Name&#34;的实际值,这可能是问题所在。 此外,检查JOIN查询是否返回任何结果(排除WHERE子句)。
我希望它能给你一个线索。