0

有人可以帮忙吗不确定我在使用什么错误:

在我的控制器中:

 [HttpPost]
 public ActionResult SaveRecommendedUserDetails(RecommendAFriendViewModel model)
 {
    //List<Entities.Group.Group> entityGroups = new List<Entities.Group.Group>();

        foreach (var group in model.Groups)
        {
          Entities.Group.Group entityGroup = new Entities.Group.Group();
          entityGroup.GroupId = group.GroupId;
          //entityGroups.Add(entityGroup);
          recommendedUser.Groups.Add(entityGroup); //groups in recommendeduser is already of type ICollection.
        }
 }

RecommendAFriendViewModel 模型组属性:

 public IEnumerable<DataModels.Group.GroupDataModel> Groups { get; set; }

推荐用户实体组属性:

  public virtual ICollection<Group.Group> Groups { get; set; }

在我得到的两条红线上:无法从“int”转换为“Zinc.Entities.Group.Group”
和:system.Collections.Generic.List.Add(Zinc.Entities.Group.Group) 的最佳重载方法匹配' 有一些无效的参数

可以告诉我我做错了什么吗?谢谢

4

2 回答 2

0

您从未初始化entityGroups变量。在使用变量之前,您应该确保它已被分配。您的范围entityGroup也可以移动到foreach循环中:

[HttpPost]
public ActionResult SaveRecommendedUserDetails(RecommendAFriendViewModel model)
{
    var entityGroups = new List<Entities.Group.Group>();
    foreach (var group in model.Groups)
    {
        if (!recommendedUser.Groups.Any(x => x.GroupId == group.GroupId))
        {
            var entityGroup = new Entities.Group.Group();
            entityGroup.GroupId = group.GroupId;
            entityGroups.Add(entityGroup.GroupId);
        }
    }
    recommendedUser.Groups.Add(entityGroups);
}
于 2013-03-28T08:46:57.117 回答
0

您不会在循环Entities.Group.Group的每次迭代中实例化一个新对象foreach。您所做的只是覆盖最后一个entityGroup.GroupId属性集,然后尝试将相同的实体对象添加到集合中,因为它已经存在于先前的迭代中。

在语句中移动您的 entityGroup 变量声明if应该可以解决您的问题。

if (!recommendedUser.Groups.Any(x => x.GroupId == group.GroupId))
{
  Entities.Group.Group entityGroup = new Entities.Group.Group(); // here
  entityGroup.GroupId = group.GroupId;
  entityGroups.Add(entityGroup); //get red line here
}
于 2013-03-28T08:47:53.973 回答