Quantcast
Channel: Active questions tagged blazor - Stack Overflow
Viewing all articles
Browse latest Browse all 4839

Filtering records by month and year - RazorPage/C#

$
0
0

I am trying to filter my records by month and year. The filtering for the month works fine, but the filter for the year doesn't.

For some reason if I try to change the year it always sets the value for my SelectedYear-Property to "01/01/0001", or if I set a default value for my SelectedYear-Property (e.g. DateTime.Today) and if I try to change it it always hops back to the default value.

Maybe you can help me I can't figure out where the problem is.

Probably has something to do with wrong ModelBinding?

Here is my code:

Index.cshtml.cs

public class IndexModel : PageModel{    private readonly CMSContext _context;    private readonly ILogger<IndexModel> _logger;    public IndexModel(CMSContext context, ILogger<IndexModel> logger)     {        _context = context;        _logger = logger;    }    public IList<TimeManagementModel> TimeManagementModel { get; set; }    [BindProperty(SupportsGet = true)]    public DateTime SelectedMonth { get; set; } = DateTime.Today;    [BindProperty(SupportsGet = true)]    public DateTime SelectedYear { get; set; } = DateTime.Today;    public async Task OnGetAsync()    {        _logger.LogInformation("SelectedYear value: {SelectedYear}", SelectedYear);        TimeManagementModel = await _context.TimeManagerModel        .Where(x => x.Date.Month == SelectedMonth.Month && x.Date.Year == SelectedYear.Year)        .OrderByDescending(x => x.Date)        .ToListAsync();        CalculateDailyWorkedHours();        CalculateOvertime(7.7);    }}

Index.cshtml

@page@model TestRazor.Pages.TimeManager.IndexModel@{    ViewData["Title"] = "TimeManager";}<h1>Time Manager</h1><head><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"><script type="text/javascript" src="/js/TimeManager.js"></script></head><body><p><a asp-page="Create" class="btn btn-success">Create New</a></p><form method="get"><div style="display: flex"><div style="margin-right: 10px;"><label for="selectedMonth">Select Month:</label><select name="SelectedMonth" id="selectedMonth" class="form-control" onchange="this.form.submit()">                    @{                        var today = DateTime.Today;                        var selectedMonthValue = Model.SelectedMonth.ToString("yyyy-MM");                        var months = Enumerable.Range(1, 12).Select(i => new DateTime(today.Year, i, 1));                        foreach (var month in months)                        {<option value="@month.ToString("yyyy-MM")" selected="@(selectedMonthValue == month.ToString("yyyy-MM"))">                                @month.ToString("MMMM")</option>                        }                    }</select></div><div><label for="selectedYear">Select Year:</label><select name="SelectedYear" id="selectedYear" class="form-control" onchange="this.form.submit()">                    @{                        var currentYear = DateTime.Today.Year;                        for (var year = currentYear - 5; year <= currentYear + 5; year++)                        {<option value="@year" selected="@(Model.SelectedYear.Year == year)">@year</option>                        }                    }</select></div></div></form></body>

Viewing all articles
Browse latest Browse all 4839

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>