2014-02-13 18 views
1

ViewBag数据抛出这个异常,我不知道为什么?包含ViewBag.Data的行上的View Class中的异常错误。任何帮助将不胜感激!ViewBag抛出NullReferenceException(对象不发送到实例)

<table> 
<tr> 
    <th>Response Text</th> 
    <th>Date & Time of Update</th> 
    <th>Username</th> 
</tr> 

@foreach (OfficiumWebApp.Models.ResponseViewModel item in ViewBag.Data) 
{ 
    <tr> 
     <td>@item.ResponseText</td> 
     <td> 
     <td>@item.DateTimeOfUpdate</td> 
     <td> 
     <td>@item.Username</td> 
     <td> 
    </tr> 
} 

这里是我的控制器的方法:

[Authorize(Roles = "Customer")] 
    public ActionResult Index() 
    { 
     var yyy = (from a in db.Responses select new ResponseViewModel {ResponseText = a.ResponseText, DateTimeOfUpdate = a.DateTimeOfUpdate.ToString(), Username = a.UserName}); 
     ViewBag.Data = yyy; 
     var LogResponses = from b in db.Responses where b.LogID == LogID select b; 
     return View(LogResponses.ToList()); 
    } 

回答

2

您需要在您的视图中添加null值支票ViewBag.Data象下面这样:

@if (ViewBag.Data != null) 
{ 
    foreach (OfficiumWebApp.Models.ResponseViewModel item in ViewBag.Data) 
    { 
    <tr> 
     <td>@item.ResponseText</td> 
     <td> 
     <td>@item.DateTimeOfUpdate</td> 
     <td> 
     <td>@item.Username</td> 
     <td> 
    </tr> 
    } 
} 
+0

有趣。它现在不会抛出任何异常,但它仍然不起作用。它只输出表格中的单词(响应文本,更新日期时间,用户名),而不是实际的任何结果数据。 – ASPCoder1450

+0

这是因为您的查询'yyy'的结果为null,与'ViewData'不同,'ViewBag'默认没有空值检查。 – Lin

+0

我需要将a.LogID == LogID添加到我的yyy查询中。如何将where子句 – ASPCoder1450

相关问题