C# 在模型中使用foreach循环时出现NullReferenceException
我一直在尝试使用C# 在模型中使用foreach循环时出现NullReferenceException,c#,html,asp.net-mvc,C#,Html,Asp.net Mvc,我一直在尝试使用foreach显示数据库表中的数据,但是我遇到了以下错误: App_Web_tncl0rkz.dll中发生“System.NullReferenceException”类型的异常,但未在用户代码“”中处理 错误位置:@foreach(模型中的变量img) 当我试图访问视图时,应用程序崩溃,导致上述错误 这是我的视图的HTMLcodeC#包含在我使用visual studio编程时 似乎您正在尝试迭代一个不是集合的对象。在控制器中,传递的是单个“映像”,而不是集合。但是,您的特定错
foreach
显示数据库表中的数据,但是我遇到了以下错误:
App_Web_tncl0rkz.dll中发生“System.NullReferenceException”类型的异常,但未在用户代码“”中处理
错误位置:@foreach(模型中的变量img)
当我试图访问视图时
,应用程序崩溃,导致上述错误
这是我的视图的HTML
codeC#
包含在我使用visual studio编程时
似乎您正在尝试迭代一个不是集合的对象。在控制器中,传递的是单个“映像”,而不是集合。但是,您的特定错误是一个空引用异常,因此当“Model”到达视图时,它看起来可能是空的。在某些情况下(无论是在控制器中还是在视图中),在尝试访问对象的任何属性之前,您都需要检查对象是否为空,否则您将获得空引用异常。从控制器操作发送单个图像(
返回视图(img);
)而视图绑定到图像对象的集合(@model IEnumerable
)。您需要发送图像集合,即使它包含单个图像。在action方法中更改以下语句
return View(img);
到
返回视图(新列表(){img});
您只返回了对象(图像的img类型),而没有返回集合列表
仅对集合使用Foreach。
如果不将集合传递给视图,则可以在模型中直接访问它
代码:如果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>
@DisplayFor(model=>model.imagePath)
@DisplayFor(model=>model.Signature)
@DisplayFor(model=>model.Username)
@ActionLink(“下载”,“下载”,新的{username=Model.username})
不需要foreach,只使用foreach列表集合。似乎img只是一个对象。删除foreach并重试。请注意,模型视图控制器标记用于解决有关模式的问题。ASP.NET-MVC实现有一个特定的标记。我已经尝试过了,但没有出现错误。视图
启动,后面是表头,但不包括foreach
语句(其中包含迭代数据)。你知道原因是什么吗?再次感谢您的帮助!
return View(img);
return View(new List<Image>(){img});
<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>