【问题标题】:Send Anonymous Type (List) to View in ASP.NET Core将匿名类型(列表)发送到 ASP.NET Core 中的视图
【发布时间】:2017-11-18 05:14:05
【问题描述】:

我正在尝试向我的视图发送匿名类型。

匿名类型的构造方式如下:

    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 吗?如果是这种情况,我如何使用此查询的结果填充该视图模型?

【问题讨论】:

    标签: asp.net anonymous-types


    【解决方案1】:

    我使用 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 2023-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多