提问者:小点点

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


我有一个输入字段是日期(没有时间),我使用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">

共1个答案

匿名用户

我找到了一个解决这个问题的简单方法。 我不确定将值视为字符串而不是日期时间是否也能解决问题,但这样做会远离它本质上是一个日期这一事实。

我已经有了一个类扩展帮助程序来获取所需的HTML格式日期,所以我将这个字符串结果设置为元素的值,这似乎在所有场景中都能工作

<input type="date" value="@Model.DateFromString" asp-for="DateFrom" min="@Model.EarliestDate.ToHtmlInputDate()" max="@Model.LatestDate.ToHtmlInputDate()" onchange="$('form').submit();" class="form-control">