asp.net mvc - c# - mvc中的列表问题

本文关键字:mvc 列表 问题 net asp | 更新日期: 2023-09-27 18:01:17

我在以下代码中有问题。下面是我的模型代码

public class Comments
{
    public string displayComments { get; set; }
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
    public DateTime? dTime { get; set; }
    public int airPortId { get; set; }
}
public class LstComments
{
    private List<Comments> _lstcomment = new List<Comments>();
    public List<Comments> lstCommet
    {
        get
        {
            return _lstcomment;
        }
        set
        {
            _lstcomment = value;
        }
    }
}

和在我的控制器我从EF获取数据,并将其添加到For循环的属性。下列代码

Comments com = new Comments();
LstComments savedComments = new LstComments();
AirportEntities airPortEntity = new AirportEntities();
var userComments = from c in airPortEntity.AirportComments
                    select c;
//List<Comments> savedComments = new List<Comments>();
foreach (var item in userComments)
{
    com.displayComments = item.Comments;
    com.dTime = item.Time;
    savedComments.lstCommet.Add(com);            
}

我的问题是我的整个列表正在更新相同的记录(最近添加的数据)

例如

。Foreach第3次使用第3项数据更新列表中的第1和第2第3项。

asp.net mvc - c# - mvc中的列表问题

在循环之外实例化Comments。这意味着堆上有一堆对同一注释对象的引用。你需要做

Comments com = new Comments();在foreach内。这将在每次迭代中创建一个单独的实例,而不是仅仅给一个实例新的值。

您需要在foreach中每次实例化Comments com = new Comments();。到目前为止,您只需重写对同一对象的引用。

或者将foreach重写为:

    foreach (var item in userComments)
    {
        savedComments.lstCommet.Add(
           new Comments()
           {
               com.displayComments = item.Comments,
               com.dTime = item.Time
           });  
    }