Turns out that I got it working. I suspected of an interference between both capabilities, but actually it was not.
The problem is in the editor template, it was incomplete. For the form to send back the values, they need to have a value (of course) and a name. If the name is not present, the value won't be posted back to the server, and, of course, the binder won't be called as there is no value to bind.
The correct template should look more something like this:
@model DateTime?
<input type="date" id="@Html.IdFor(model => model)" name="@Html.NameFor(model => model)" value="@{
if (Model.HasValue) {
@Model.Value.ToISOFormat()
}
}" />
Furthermore, the ISO format string was wrong on my side, it should have been yyyy-MM-dd
instead of YYYY-MM-dd
.