我遇到以下问题: 在控制器中,我选择我需要的数据并将其存储到ViewData;
using (Models.SkedruleEntities ctx = new Models.SkedruleEntities())
{
ViewData["users"] = (from u in ctx.User select u);
}
在View中我尝试从ViewData中读取这样的内容:
<p>
<%foreach(User user in (IEnumerable<User>)ViewData["users"]) { %>
<div><%=user.Name %></div>
<%}%>
</p>
但我得到一个System。ObjectDisposedException
错误,因为ViewData似乎包含查询,而不是查询检索到的数据,当然上下文ctx也不再可用。
有任何帮助吗? 感谢
答案 0 :(得分:2)
只需添加ToList():
ViewData["users"] = (from u in ctx.User select u).ToList();
答案 1 :(得分:2)
您将查询存储在视图数据中,而不是结果中。因此,在视图中,您将获得查询并执行它。在那一刻,背景已经被处理掉了。
解决方案是在控制器中执行查询并将结果存储在ViewData中:
ViewData["users"] = (from u in ctx.User select u).ToList();