我一直在尝试使用foreach
显示数据库表中的数据,但是我收到此错误:
类型' System.NullReferenceException'的例外情况发生在App_Web_tncl0rkz.dll中,但未在用户代码中处理。
错误:@foreach(模型中的var img)
当我尝试访问View
时,应用程序崩溃导致提到的错误。
这是我的View HTML
代码 C#
,因为我正在使用visual studio进行编程
@model IEnumerable<Common.Image>
....
<table class="table">
<tr>
<th>@Html.DisplayNameFor(model => model.imagePath)</th>
....
</tr>
@foreach (var img in Model)
{
<tr>
<td>@Html.DisplayFor(imgItem => img.imagePath)</td>
....
</tr>
}
</table>
这是我的Controller's
C#
代码。
[Authorize(Roles="Admin")]
public ActionResult UsersGallery(string username)
{
ImagesBL imgBl = new ImagesBL();
Image img = imgBl.GetImage(username);
return View(img);
}
答案 0 :(得分:0)
您似乎正在尝试迭代不是集合的对象。在你的控制器中,你传递的是一个&#34; Image&#34;而不是一个集合。但是,您的特定错误是一个空引用异常,因此它看起来像&#34; Model&#34;当它到达视图时可能为null。在某些时候(在控制器中或在视图中),您将需要在尝试访问对象的任何属性之前检查对象是否为null,否则您将获得空引用异常。
答案 1 :(得分:0)
从控制器操作发送单个图像(return View(img);
),而View绑定到图像对象集合(@model IEnumerable<Common.Image>
)。即使图像包含单个图像,也需要发送图像集。在操作方法
return View(img);
到
return View(new List<Image>(){img});
答案 2 :(得分:0)
您只返回了对象(图像的img类型)而不是集合列表。
Use Foreach for the collection only.
如果您没有传递集合进行查看,那么您可以直接在模型中访问它。
您的代码:如果img不是集合,请删除foreach。
<tr>
<td>
@Html.DisplayFor(model => model.imagePath)
</td>
<td>
@Html.DisplayFor(model => model.Signature)
</td>
<td>
@Html.DisplayFor(model => model.Username)
</td>
<td>
@Html.ActionLink("Download", "Download", new { username = Model.Username })
</td>
</tr>