在Foreach(MVC)中使用类

本文关键字:Foreach MVC | 更新日期: 2023-09-27 17:58:45

我有点问题!在我的MVC中,每当它试图运行MVC时,它都会给我带来"System.NullReferenceException:对象引用未设置为对象实例"的问题。

基本上,这是控制器中的代码:

 public PartialViewResult ViewAllFaults()
{
     List<AdminLogEntries> faults = new FaultService.FaultServiceClient().GetAllOfFaultDetails().ToList();            
     ViewBag.ListOfFaults = faults;
     return PartialView("_viewallfaults", faults);
}

这是我认为的代码:

@foreach (Common.Views.AdminLogEntries item in ViewBag.ListOfFaults)
{
<tr>
    <td>
        @item.FaultID
    </td>
{...}

这是我的课:

namespace Common.Views
{
public class AdminLogEntries
{
    public string FaultID { get; set; }
    public string Description { get; set; }
    public int ProductID { get; set; }
    public string Username { get; set; }
    public DateTime LogDate { get; set; }
    public int OrderID { get; set; }
    public string Status { get; set; }
 }
}

我读了一些关于IEnumerable的内容,但无法真正实现或理解它。感谢您的帮助!

**更新:**

所以我发现它甚至没有通过控制器方法!我一定是在用错误的方式处理局部问题。这是我在主视图中写的:

 @Html.Partial("~/Views/Admin/_viewallfaults.cshtml");

我认为这就是阻止它访问控制器的原因。。

在Foreach(MVC)中使用类

尝试将代码更改为:

@foreach (Common.Views.AdminLogEntries item in Model)

当您将故障作为第二个参数中的视图模型传递给视图时:

return PartialView("_viewallfaults", faults);

我不确定ViewBag是否可用于部分视图。。。不管怎样,您当前使用的是return PartialView("_viewallfaults", faults);,那么您只需要迭代您的模型!

@model List<Common.Views.AdminLogEntries>
...
@foreach (Common.Views.AdminLogEntries item in Model)
{
    ...
}

一眼望去,引用可以为null的地方有很多。现在,添加一些空检查,看看它可能在哪里。如果添加一个调用堆栈,可能会有所帮助。

FaultService.FaultServiceClient().GetAllOfFaultDetails().ToList();

GetAllOfFaultDetails()为null吗?

AdminLogEntries项是否具有空ID?