我有
- 仅包含日期的输入字段(无时间(
- 这些字段使用
type=date
进行日期选择。 - 该值使用 ASP-for 属性绑定到模型。
当用户错误地选择了晚于结束日期的"开始"日期时:
- 我的操作会反转日期,以便它们以正确的方式显示。
- 但是,HTML 值将保留以前选择的值,而不是新发布的更正值。
实际上,asp-for 忽略了模型中的最新值。
模型属性是一个日期时间而不是一个字符串,在这种情况下我不使用数据注释。
<input type="date" asp-for="DateFrom"
min="@Model.EarliestDate.ToHtmlInputDate()"
max="@Model.LatestDate.ToHtmlInputDate()"
onchange="$('form').submit();" class="form-control">
我找到了该问题的简单解决方法。我不确定将值视为字符串而不是 DateTime 是否也是一种治疗方法,但这实际上摆脱了从根本上它是一个日期的事实。
我已经有一个类扩展助手来获取所需的 HTML 格式日期,所以我将此字符串结果设置为元素的 VALUE,这似乎适用于所有情况
<input type="date" value="@Model.DateFromString" asp-for="DateFrom" min="@Model.EarliestDate.ToHtmlInputDate()" max="@Model.LatestDate.ToHtmlInputDate()" onchange="$('form').submit();" class="form-control">