我有一个简单的应用程序。当用户登录时,会创建会话变量并将其重定向到另一个控制器,该控制器从数据库中提取一些信息。我需要将它存储到会话变量然后将其返回到视图。初始部分很好,它返回它,我看到了信息。但是,当我尝试创建搜索查询时,它返回会话为空,即使我从未清除它。
public ActionResult ShowCourses()
{
if (Session["Username"] != null)
{
string Username = Session["Username"].ToString();
using (DefaultConnection db = new DefaultConnection())
{
var model = from c in db.Courses
where c.Username == Username
select c;
Session["Courses"] = model.ToList();
var Courses = Session["Courses"];
return View(Courses);
}
}
else
{
return RedirectToAction("Login", "Users");
}
}
但是当我尝试运行搜索查询以遍历会话时,它会返回Courses
为空。问题是coursesQuery
返回null并且我不确定原因。
public ActionResult SearchCourses(string query)
{
if (Session["Username"] != null)
{
var coursesQuery = Session["Courses"] as IEnumerable<Course>;
if (coursesQuery != null)
{
// Do Something
}
}
}
答案 0 :(得分:1)
在设置为Session之前,您在课程集合中执行了.ToList()
。
试试这个。阅读时请使用List<Course>
。
if (Session["Courses"] != null)
{
var coursesQuery = (List<Course>) Session["Courses"];
}