Asp.net mvc 控制器中的异常NullReferenceException(asp.net mvc)
我的项目中有供应商模型和用户模型,每个供应商都有几个用户Asp.net mvc 控制器中的异常NullReferenceException(asp.net mvc),asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我的项目中有供应商模型和用户模型,每个供应商都有几个用户 供应商模型 public class SupplierRow { public Guid Id { get; set; } public string FullName { get; set; } public bool Subscribed { get; set; } public bool Active { get; set; } public int Visits { get; set; }
供应商模型
public class SupplierRow
{
public Guid Id { get; set; }
public string FullName { get; set; }
public bool Subscribed { get; set; }
public bool Active { get; set; }
public int Visits { get; set; }
public List<UserRow> Users { get; set; }
public bool AllInactive
{
get
{
foreach (UserRow ur in Users)
{
if (ur.Status == 1) return false;
}
return true;
}
}
}
然后我在控制器中使用我的模型
public ActionResult Grid(bool? active)
{
var suppliers = Context.Suppliers.AsNoTracking()
.WhereIf(active != null, e => e.Active == active)
.Select(e => new SupplierRow
{
Id = e.Id,
FullName = e.FullName,
Active = e.Active,
Visits = e.Visits,
})
.ToList();
List<Guid> supplierIds = new List<Guid>();
foreach (SupplierRow sr in suppliers)
{
supplierIds.Add(sr.Id);
}
var users = Context.Users.AsNoTracking()
.Where(e => supplierIds.Contains(e.SupplierId.Value))
.Select(e => new UserRow
{
Id = e.Id,
FullName = e.FullName,
Email = e.Email,
Name = e.Name,
Status = e.Status,
Role = e.Role,
SupplierId = e.SupplierId.Value
}).ToList();
foreach (UserRow ur in users)
{
foreach (SupplierRow sr in suppliers)
{
if (ur.SupplierId == sr.Id)
{
sr.Users.Add(ur);
}
}
}
return PartialView("_Grid", suppliers);
}
public ActionResult网格(bool?活动)
{
var suppliers=Context.suppliers.AsNoTracking()
.WhereIf(active!=null,e=>e.active==active)
.选择(e=>新供应商行
{
Id=e.Id,
FullName=e.FullName,
主动的,主动的,
访问量=e.访问量,
})
.ToList();
列表供应商ID=新列表();
foreach(供应商中的供应商行sr)
{
供应商Id.Add(sr.Id);
}
var users=Context.users.AsNoTracking()
.Where(e=>SupplierId.Contains(e.SupplierId.Value))
.选择(e=>newuserrow
{
Id=e.Id,
FullName=e.FullName,
电子邮件,
Name=e.Name,
状态=e.状态,
角色,
SupplierId=e.SupplierId.Value
}).ToList();
foreach(用户中的用户行ur)
{
foreach(供应商中的供应商行sr)
{
如果(ur.SupplierId==sr.Id)
{
高级用户添加(ur);
}
}
}
返回部分视图(“网格”,供应商);
}
但是当我尝试调试我的项目时,我在这里遇到了一些异常
发生了什么?如何修复此问题?您的
用户列表未初始化。在访问之前创建一个新列表Users=newlist()代码>您可以更改供应商行
类:
public class SupplierRow {
private List<UserRow> users = new List<UserRow>();
public List<UserRow> Users
{
get { return users; }
set { users = value; }
}
...
}
sr.Users
为null
。您可以在SupplierRow
构造函数中添加Users=new List()
public class SupplierRow {
private List<UserRow> users = new List<UserRow>();
public List<UserRow> Users
{
get { return users; }
set { users = value; }
}
...
}
public class SupplierRow
{
public SupplierRow()
{
Users = new List<UserRow>();
}
public List<UserRow> Users { get; set; }
...
}
foreach (UserRow ur in users)
{
foreach (SupplierRow sr in suppliers)
{
sr.Users = new List<UserRow>();
if (ur.SupplierId == sr.Id)
{
sr.Users.Add(ur);
}
}
}
foreach (SupplierRow sr in suppliers)
{
sr.Users = users.Where(user => user.SupplierId == sr.Id);
}
return PartialView("_Grid", suppliers);