[asp.net-mvc]编辑相关的数据,在 MVC 中错误的结果

发布时间: 2016/10/9 6:17:54
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我努力适应这种解决方案对我的项目。

我有雇员,即可以有多个服务 (多对多)

public class ServiceType
{   public int Id { get; set; }
...
    public virtual ICollection<ServiceSubtype> ServiceSubtypes { get; set; }
}

public class Employee
{ public int Id { get; set; }
...
public virtual ICollection<Employee> Employees{ get; set; }
}

编辑操作员工的 HttpPost 添加相当于以下到我的项目

var instructorCourses = new HashSet<int>
(instructorToUpdate.Courses.Select(c => c.CourseID));

我读起来就像这

var employeeServiceTypes = new HashSet<int>
(employee.ServiceTypes.Select(c => c.Id));

但在那时出现以下错误︰

值不能为空。 参数名称︰ 源

线 140: var employeeServiceTypes = 新 HashSet

行 141: (员工。ServiceTypes.Select (=> c.Id c));

这一拔不出。谢谢你的帮助 !

解决方法 1:

至少一名雇员已ServiceTypes = null

您不能访问 Id 在这种情况下 Select(c => c.Id) -否则此异常出现。

你只需要通过筛选员工无需避免 acces ServiceTypes 或避免通过访问 if 子句。

HashSet<int> employeeServiceTypes = new HashSet<int>();
if (employee != null && employee.ServiceTypes != null)
{
    foreach (int id in employee.ServiceTypes.Select(c => c.Id))
    {
        employeeServiceTypes.Add(id);
    }
}
赞助商