Asp.net mvc ASP.NET MVC(对象引用未设置为对象的实例)

Asp.net mvc ASP.NET MVC(对象引用未设置为对象的实例),asp.net-mvc,join,include,Asp.net Mvc,Join,Include,我在显示个人文件列表时遇到以下问题, 但是我在查询中使用了(使用System.Data.Entity)和(Include),它不起作用 类模型 public class PersonalFile { public int Id { get; set; } [StringLength(50)] public string FileName { get; set; } [StringLength(500)] public string FilePath {

我在显示个人文件列表时遇到以下问题, 但是我在查询中使用了(使用System.Data.Entity)和(Include),它不起作用

类模型

public class PersonalFile
{
    public int Id { get; set; }

    [StringLength(50)]
    public string FileName { get; set; }

    [StringLength(500)]
    public string FilePath { get; set; }

    public DateTime UploadDateTime { get; set; }

    public int EmployeeId { get; set; }

    [ForeignKey("EmployeeId")]
    public Employee Employee { get; set; }

    public int? FileCategoryId { get; set; }
    [ForeignKey("FileCategoryId")]
    public virtual FileCategory FileCategory { get; set; }

}
类视图模型

public class PersonalFileViewModel
{
    public int Id { get; set; }

    [StringLength(50)]
    public string FileName { get; set; }

    [StringLength(500)]
    public string FilePath { get; set; }
    public int EmployeeId { get; set; }

    [Required]
    public int FileCategoryId { get; set; }

    public IEnumerable<PersonalFile> PersonalFiles { get; set; }
}
看法

foreach(Model.PersonalFiles中的var j)
{
@j、 文件名
@j、 FileCategory.categoryName
@j、 上载日期时间
@ActionLink(“Delete”,“Delete”,new{j.Id},new{@class=“btn-btn-danger-btn-sm”,onclick=“return-confirm('你真的想删除这个文件吗?');”)
}

首先,确保每个
个人文件
都属于相应的
文件类别

其次,您应该
.ToList()
强制我们的查询改为


首先,确保每个
个人文件
都属于相应的
文件类别

其次,您应该
.ToList()
强制我们的查询改为


我把这行代码放在视图上解决了这个问题

@(j.FileCategory == null ? "" : j.FileCategory.categoryName)

我把这行代码放在视图上解决了这个问题

@(j.FileCategory == null ? "" : j.FileCategory.categoryName)

检查@j.FileCategory是否为空?也许这就是为什么它没有检索CategoryName的值在控制器中添加一个临时行:
\u dbContext.PersonalFiles.Include(p=>p.Employee).Include(p=>p.FileCategory).Where(x=>x.EmployeeId==id).ToList()-此处是否包含预期数据?是否在数据库中?检查@j.FileCategory是否为空?也许这就是为什么它没有检索CategoryName的值在控制器中添加一个临时行:
\u dbContext.PersonalFiles.Include(p=>p.Employee).Include(p=>p.FileCategory).Where(x=>x.EmployeeId==id).ToList()-此处是否包含预期数据?它在数据库里吗?
foreach (var j in Model.PersonalFiles)
                            {
                                <tr style="border-top: 1px solid black;">
                                    <td style="vertical-align: middle;">@j.FileName</td>
                                    <td style="vertical-align: middle;"> @j.FileCategory.categoryName </td>
                                    <td style="vertical-align: middle;">@j.UploadDateTime</td>
                                    <td>
                                        <a href=@Url.Content("~/Content/Images/PersonalFiles/"+j.FilePath) class="btn btn-success btn-sm">Download</a>
                                        @Html.ActionLink("Delete", "Delete", new { j.Id }, new { @class = "btn btn-danger btn-sm", onclick = "return confirm('Do you really want to delete this file?');" })
                                    </td>
                                </tr>

                            }
PersonalFiles = _dbContext.PersonalFiles.Include(p => p.Employee).Include(p => p.FileCategory).Where(x => x.EmployeeId == id).ToList()
@(j.FileCategory == null ? "" : j.FileCategory.categoryName)