Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从控制器返回要查看的多维列表?_C#_Asp.net Mvc_Asp.net Mvc 4_Model View - Fatal编程技术网

C# 如何从控制器返回要查看的多维列表?

C# 如何从控制器返回要查看的多维列表?,c#,asp.net-mvc,asp.net-mvc-4,model-view,C#,Asp.net Mvc,Asp.net Mvc 4,Model View,我正在尝试将多维列表从控制器返回到视图。 我有一个 模型 视图模型 看法 控制器 视图模型: public class HomeViewModel { public DateTime Date { get; set; } public List<Snapshot> SnapshotItems { get; set; } } 视图: 控制器: public PartialViewResult RecentEmails()

我正在尝试将多维列表从控制器返回到视图。 我有一个

模型 视图模型 看法 控制器 视图模型:

 public class HomeViewModel
    {
        public DateTime Date { get; set; }
        public List<Snapshot> SnapshotItems { get; set; }
    }
视图:

控制器:

public PartialViewResult RecentEmails()
        {
            int days = 2;
            HomeViewModel viewModel = new HomeViewModel();
            List<Snapshot> snapshots = new List<Snapshot>();
            List<HomeViewModel> viewModelList = new List<HomeViewModel>();

            for (int count = 0; count < days; count++)
            {

                viewModel.Date = DateTime.Now.AddDays(count * (-1));

                snapshots = GetEmailSnapshot(9, viewModel.Date);

                viewModel.SnapshotItems = snapshots;
            }
            viewModelList.Add(viewModel);
            return PartialView(viewModelList.AsEnumerable());
        }

private List<Snapshot> GetEmailSnapshot(int numSnapshots, DateTime dateReceived)
        {
            List<Snapshot> snapshots = new List<Snapshot>();

            string dbConnString = WebConfigurationManager.ConnectionStrings["dbConn"].ConnectionString;
            MySqlConnection dbConn = new MySqlConnection(dbConnString);
            dbConn.Open();
            MySqlCommand dbCmd = new MySqlCommand();

            string date = dateReceived.ToString("yyyy/MM/dd");

            dbCmd.CommandText = "SELECT a.snapshot_id, a.subject, a.snapshot_guid, a.date_sent, a.image, a.thumbnail, a.status, b.name, b.brand_guid FROM snapshots a INNER JOIN brands b ON a.brand_id = b.brand_id WHERE status = 1 AND a.archive = 0 AND (thumbnail IS NOT NULL OR thumbnail = '') AND DATE(date_sent) = '" + date + "' GROUP BY a.brand_id ORDER BY date_sent DESC LIMIT " + numSnapshots;
            dbCmd.Connection = dbConn;
            MySqlDataReader dbResult = dbCmd.ExecuteReader();
            while (dbResult.Read())
            {
                snapshots.Add(new Snapshot
                {
                    SnapshotId = Convert.ToInt32(dbResult["snapshot_id"]),
                    Guid = dbResult["snapshot_guid"].ToString().Replace("-", String.Empty),
                    BrandGuid = dbResult["brand_guid"].ToString(),
                    BrandName = HttpUtility.HtmlDecode(dbResult["name"].ToString()),
                    Subject = MyHelpers.Ellipsis(HttpUtility.HtmlDecode(dbResult["subject"].ToString()), 100),
                    DateTimeSent = Convert.ToDateTime(dbResult["date_sent"]),
                    Image = dbResult["image"].ToString(),
                    Status = Convert.ToInt32(dbResult["status"]),
                    Thumbnail = dbResult["thumbnail"].ToString()
                });
            }
            dbResult.Close();

            dbCmd.Dispose();
            dbConn.Close();

            return snapshots;
        }
我遇到的问题是在视图上。它正在从GetEmailSnapshot返回相同的数据集。因此,我以2014年10月8日的9条记录为例


2014年10月8日没有被添加到列表中,然后2014年9月8日又被添加到列表中,这有什么原因吗?

我想我可能把它复杂化了。以下是简化版本:修复

public PartialViewResult RecentEmails()
        {
            int days = 2;

            List<HomeViewModel> viewModelList = new List<HomeViewModel>();

            for (int count = 0; count < days; count++)
            {
                DateTime date = DateTime.Now.AddDays(count * (-1));
                viewModelList.Add(new HomeViewModel
                {
                    Date = date,
                    SnapshotItems = GetEmailSnapshot(9, date)

                });
            }

            return PartialView(viewModelList.AsEnumerable());
        }
public PartialViewResult RecentEmails()
        {
            int days = 2;

            List<HomeViewModel> viewModelList = new List<HomeViewModel>();

            for (int count = 0; count < days; count++)
            {
                DateTime date = DateTime.Now.AddDays(count * (-1));
                viewModelList.Add(new HomeViewModel
                {
                    Date = date,
                    SnapshotItems = GetEmailSnapshot(9, date)

                });
            }

            return PartialView(viewModelList.AsEnumerable());
        }