ASP.NET Core 3 MVC:输入类型日期未从 asp-for 刷新



我有

  • 仅包含日期的输入字段(无时间(
  • 这些字段使用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">

最新更新