我有一个输入字段是日期(没有时间),我使用type=date的输入字段进行日期选择。 使用asp-for属性将值绑定到模型。 当用户错误地选择了晚于“结束”日期的“开始”日期时,“我的操作”会反转这些日期,以便它们以正确的方式显示。 但是,HTML值维护的是以前选择的值,而不是新发布的,经更正的值。 实际上,asp-for忽略了模型中的最新值。
Model属性是DateTime而不是string,并且在这种情况下我不使用DataAnnotations。
<input type="date" asp-for="DateFrom"
min="@Model.EarliestDate.ToHtmlInputDate()"
max="@Model.LatestDate.ToHtmlInputDate()"
onchange="$('form').submit();" class="form-control">
我找到了一个解决这个问题的简单方法。 我不确定将值视为字符串而不是日期时间是否也能解决问题,但这样做会远离它本质上是一个日期这一事实。
我已经有了一个类扩展帮助程序来获取所需的HTML格式日期,所以我将这个字符串结果设置为元素的值,这似乎在所有场景中都能工作
<input type="date" value="@Model.DateFromString" asp-for="DateFrom" min="@Model.EarliestDate.ToHtmlInputDate()" max="@Model.LatestDate.ToHtmlInputDate()" onchange="$('form').submit();" class="form-control">