发送匿名类型(列表)在ASP.NET核心中查看
问题描述:
我试图发送一个匿名类型到我的视图。发送匿名类型(列表)在ASP.NET核心中查看
匿名形式建立,通过以下方式:
public async Task<IActionResult> Historial()
{
return View(await _context.HechosLiquidador
.Select(c => new { Store = c.StoreID, LiqDate = c.FechaLFinLiq}).Distinct()
.AsNoTracking().OrderBy(s => s.LiqDate).ToListAsync());
}
本案的特殊性在于,查询的结果是项目的列表。我怎样才能把它传递给视图?
我应该构建一个ViewModel吗?如果是这样的话,我怎样才能用这个查询的结果填充该视图模型?
答
我的解决方案是以ViewModel的方式进行的。
定义视图模型:
public class HistorialIndexData
{
public string StoreName { get; set; }
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime FechaLFinLiq { get; set; }
}
在控制器:
首先,我们将得到我们想要列出的项目,然后重复通包含这些项目的对象,并通过一个将它们添加一个到ViewModel对象并创建一个新列表。
public async Task<IActionResult> Historial()
{
List<HistorialIndexData> newHistorial = new List<HistorialIndexData>();
var items = await _context.HechosLiquidador.Include(s => s.Stores)
.Select(c => new { Store = c.Stores.StoreName, LiqDate = c.FechaLFinLiq }).Distinct()
.AsNoTracking().OrderBy(s => s.LiqDate).ToListAsync();
foreach(var itemtolist in items)
{
HistorialIndexData info = new HistorialIndexData
{
StoreName = itemtolist.Store,
FechaLFinLiq = itemtolist.LiqDate
};
newHistorial.Add(info);
}
return View(newHistorial);
}
更新视图以使用新的ViewModel的列表。
@model List<Application.Models.ApplicationviewModels.HistorialIndexData>
完成!