如何使此 var 在 Razor Pages 中可访问

How to make this var accessible in Razor Pages

我在索引页面后面有以下代码:

public async Task OnGetAsync()
{ 
    var tournamentStats = await _context.TournamentBatchItem
         .Where(t => t.Location == "Outdoor" || t.Location == "Indoor")
         .GroupBy(t => t.Location)
         .Select(t => new { Name = $"{ t.Key } Tournaments", Value = t.Count() })
         .ToListAsync();

    tournamentStats.Add(new { Name = "Total Tournaments", Value = tournamentStats.Sum(t => t.Value) });
}

也在这段代码后面我有 class:

的定义
public class TournamentStat
{
    public string Name { get; set; }

    public int Value { get; set; } 
}

public IList<TournamentStat> TournamentStats { get; set; } 

如何将 tournamentStats / TournamentStats 引用到 Razor Pages 中?

引用Introduction to Razor Pages in ASP.NET Core

public class IndexModel : PageModel {
    private readonly AppDbContext _context;

    public IndexModel(AppDbContext db) {
        _context = db;
    }

    [BindProperty] // Adding this attribute to opt in to model binding. 
    public IList<TournamentStat> TournamentStats { get; set; }

    public async Task<IActionResult> OnGetAsync() { 
        var tournamentStats = await _context.TournamentBatchItem
             .Where(t => t.Location == "Outdoor" || t.Location == "Indoor")
             .GroupBy(t => t.Location)
             .Select(t => new TournamentStat { Name = $"{ t.Key } Tournaments", Value = t.Count() })
             .ToListAsync();

        tournamentStats.Add(new TournamentStat { 
            Name = "Total Tournaments", 
            Value = tournamentStats.Sum(t => t.Value) 
        });

        TournamentStats = tournamentStats; //setting property here

        return Page();
    }

    //...
}

并在视图

中访问属性

例如

@page
@model MyNamespace.Pages.IndexModel

<!-- ... markup removed for brevity -->

@foreach (var stat in Model.TournamentStats) {
    //...access stat properties here
}