As stated in the prior answer, full binding support is not available yet for DateOnly. However, I had a similar issue and was able to solve this using the DataType annotation.
I am working with an API that only requires the date and did not want to go through the hassle of getting the date from DateTime (albeit it's not much of a hassle, but still...).
This is the property on my model I use to build objects from the data I get back from the API:
[DataType(DataType.Date)]
public DateTime DateBecameLead { get; init; }
This is the property on my Index.cshtml.cs I use to filter the list of opportunity cards by date.:
[ BindProperty(SupportsGet = true), DataType(DataType.Date) ]
public DateTime DateBecameLead { get; init; } = new (2021, 1, 1);
Then, further down Index.cshtml.cs, I can easily compare the two properties:
OpportunityCards = OpportunityCards.Where(opp => opp.DateBecameLead >= DateBecameLead).ToList();
And for further context, here's the input tag on the Index.cshtml that is binded to the property from Index.cshtml.cs:
<input id="date-became-lead"
type="date"
asp-for="DateBecameLead" />
It's still using the old DateTime object, however, it does give the same benefit as using the DateOnly object and works just as expected. Once the full binding support is given to DateOnly, the code won't change much except I'll be able to live without the annotations.