2016-09-14 43 views
0

我想要得到的项目名称和主管的说明谁在线的ASP.NET MVC会议

我的上司控制器:

public ActionResult SupervisorDashboard() 
{ 
    var message = TempData["message"] as string; 
    var name = (from s in dc.Supervisors 
      where s.sup_email == message 
      select s.sup_fname).SingleOrDefault(); 
    ViewBag.username = name; 
    return View(); 
} 

public ActionResult ViewProject() 
{ 
    var message = TempData["message"] as string; 
    var name = (from s in dc.Supervisors 
       where s.sup_email == message 
       select s.sup_fname).SingleOrDefault(); 
    ViewBag.username = name; 

    var supid= (from s in dc.Supervisors 
       where s.sup_email==message 
       select s.sup_ID).SingleOrDefault(); 

    var projectdata = (from s in dc.OfferedProjects 
        where s.FK_sup_ID==supid 
         select s); 
    return View(projectdata); 
} 

我的导师型号:

public class SupervisorModel 
{ 
    public Supervisor supervisor { get; set; } 
    public OfferedProject offerproject { get; set; } 
} 

我查看:

@model IEnumerable<FYPManagment.Models.SupervisorModel> 
@using FYPManagment; 
@{ 
    List<OfferedProject> projectdata = (List<OfferedProject>)ViewData["projectdata"]; 
    ViewBag.Title = "ViewProject"; 
    Layout = "~/Views/Shared/_SupervisorDashboarLayout.cshtml"; 
} 

@foreach (var item in Model) 
{ 
    <tr> 
    <td>@item.offerproject.proj_title</td> 
    <td>@item.offerproject.proj_description</td> 
    <td> 
    <a href="#">Send Request</a> 
    </td> 

    </tr> 
} 

我的家庭控制器:

TempData["message"] = email; 
//Session["user"] = email; 
if (type == "supervisor") 
{ 
    return RedirectToAction("SupervisorDashboard", "Supervisor"); 
} 

我的导师仪表盘的动作也越来越在线用户,但鉴于项目的动作相同代码的电子邮件不工作。我将非常感谢你宝贵的时间。

+0

这将有助于如果你格式化你的代码,所以它是清晰的,有随机indentation使它成为一个PITA通读(这是你期望别人做)。这次我为你编辑它。 – Igor

+0

请将重定向到'ViewProject'的代码发布。 –

回答

0

您只能在TempData ONE TIME中读取密钥的值(因此名称为'temp')。它被读取后被删除。将TempData的使用更改为ViewBag或会话,它将起作用。

+1

一旦阅读,它不会被删除。它将继续存在,直到处理请求结束。 –

+0

每种方法都会返回一个完整的“请求”的操作结果。一旦第一个请求读取它并返回视图,数据将被删除,所以当你进入第二个动作时,它就消失了。 –