在上一个question的回复之后,Ben建议我将一个元组转换为一个ViewModel,我想知道下面的情况是否可以做同样的事情。
在这种情况下,我按日期订购不同的订单。在视图中,订单显示在每个日期下方。代码有效,但我认为ViewModel会更合适。
在我的控制器中,我有以下ActionResult:
var dates = db.Orders.Include(o => o.Product)
.Where(o => o.UserId == WebSecurity.CurrentUserId &&
o.IsConfirmed == true &&
o.IsSettledWithSalary == false)
.GroupBy(o => o.Date)
.Select(date => date.FirstOrDefault())
.OrderByDescending(x => x.Date);
var orders = db.Orders.Include(o => o.Product)
.Where(o => o.UserId == WebSecurity.CurrentUserId &&
o.IsConfirmed == true &&
o.IsSettledWithSalary == false);
return View(Tuple.Create(dates.ToList(), orders.ToList()));
然后在视图中我按如下方式选择此模型:
@model Tuple<List<Models.Order>,List<Models.Order>>
并且可以使用foreach(Model.Item1中的项目)和foreach(Model.Item2中的项目)循环遍历它们。
我正在尝试将其转换为ViewModel,但我不确定如何实现此目标。我当然可以在ViewModel(例如,DatePlusOrderViewModel)中放置日期和订单,然后将其发送到视图,但这不会使它更好。
我希望有人可以向我展示一些关于如何在这种情况下使用ViewModel的良好习惯或建议。