2016-03-03 69 views
-2

我有大学的教师数据在会议[“FacultyData”]会议。在asp.net中输入会话对象类型对象(类)c#

我无法从此会话中获取Faculty类的对象中的数据。

我试过下面的代码。

protected void Page_Load(object sender, EventArgs e) 
    { 
     using (dbDataContext dt = new dbDataContext()) 
     { 
      if(Session["FacultyData"]!=null) 
      { 
       Faculty objFac = new Faculty(); 
       objFac = (Faculty)Session["FacultyData"]; 
      img1.ImageUrl = objFac.Photo; 
      txtIDNo.Text = objFac.UserId; 
      txtName.Text = objFac.FacultyName; 

. 

. 

有一个与InvalidCastException消息无法转换类型的对象“System.Data.Linq.DataQuery'1 [学部]在”线为类型 '教师'

objFac = (FacultyData)];

+0

Session [“FacultyData”]是'IEnumerable '的后代,而不是'Faculty'。你必须使用'Session [“FacultyData”]。FirstOrDefault()' –

+0

你的session变量保存查询本身,而不是查询结果。 – Kramb

+0

你在哪里设置Session [“FacultyData”]?让我们减少别人的猜谜游戏。 – MethodMan

回答

1

您必须从Linq查询中设置Session [“FacultyData”]值.Linq查询使用延迟评估,因此您正在存储查询的结果而不是查询结果查询本身在会话变量中,你需要在Linq查询中使用一个操作符来强制它luate,如ToList,ToArray或FirstOrDefault。然后将结果查询结果对象存储在会话中。