如何在Razor Pages中访问此var

问题描述 投票:1回答:1

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

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) });
}

也在这个代码后面我有这个类的定义:

public class TournamentStat
{
    public string Name { get; set; }

    public int Value { get; set; } 
}

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

如何将tournamentStats / TournamentStats引用到Razor页面?

c# asp.net-core razor-pages
1个回答
3
投票

参考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
}
© www.soinside.com 2019 - 2024. All rights reserved.