我在索引页面后面有以下代码:
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页面?
参考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
}