控制器中的一些错误(asp.net mvc)

时间:2013-06-06 10:15:30

标签: asp.net-mvc asp.net-mvc-4

我的控制器出现了一些错误 首先,我获得了供应商列表,然后我获得了所有供应商的ID,然后我获得了每个供应商的所有用户。

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<int> supplierIds = new List<int>();
        foreach (SupplierRow sr in suppliers)
        {
            supplierIds.Add(sr.Id);
        }

        var users = Context.Users.AsNoTracking()
            .Where(e => supplierIds.Contains(e.SupplierId))
            .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
            }).toList();

        foreach (UserRow ur in users) 
        {
            foreach (SupplierRow sr in supplier) 
            {
                if (ur.SupplierId == sr.Id) 
                {
                    sr.Users.Add(ur);
                } 
            }
        }

        return PartialView("_Grid", suppliers);
    }

这里
enter image description here

此处enter image description here
我的代码出了什么问题?如何解决?

1 个答案:

答案 0 :(得分:1)

问题是您尝试将Guid对象添加到仅接受int值的集合。您的User.SupplierIdGuid?(或Nullable<Guid>)类型的对象,而Supplier.IdGuid。通过将其声明为:

来修复集合
List<Guid> supplierIds = new List<Guid>();

然后在你的代码中使用:

foreach(SupplierRow sr in suppliers)
{
    supplierIds.Add(sr.Id);
}

为用户执行相同的操作,但您必须使用SupplierId.HasValueSupplierId.Value来检查它是否具有值并读取值。这是因为它被声明为可以为空的Guid。