ASP.NET 当我更改我的计算机日期格式并且无法检索日期选择器值时,MVC Core DateTime 表现得很奇怪

ASP.NET MVC Core DateTime acting weird when I change my Computer Date format and cannot retrieve datepicker value

每当我将 PC 日期格式从 dd/M/yyyy 更改为 M/dd/yyyy

时,我的 MVC Core 会表现得很奇怪

@Html.TextBoxFor中的怪异,即DatePicker,选择日期并提交时,有时可以由控制器侧检索该值,那里有价值)。

此外,例如 @Html.TextBoxFor(m => m.DateOfBirth) 当我的 PC 日期格式是 dd/M/yyyy 时,它会显示它的值,如果我的 PC 日期格式是 M/dd/yyyy[=18,它会是空的=]

添加 jQuery 日期选择器。它会为你工作。

@Html.TextBoxFor(model => model.date_of_birth, new { htmlAttributes = new { @class ="m-wrap datepicker", @readonly="readonly" } } )

您遇到的问题是由于 jQuery DatePicker 和控制器之间的日期格式不同造成的。如果您不介意以与控制器相同的格式显示日期,您可以更改 DatePicker 日期格式。

或者,您可以使用 DatePickeraltField 功能来提供替代格式。您需要隐藏 DateOfBirth 并添加另一个 HTML 文本框以显示 DatePicker。当用户选择一个日期时,altField 功能会自动将您的 DateOfBirth 更新为您指定格式的所选日期。最后,如果您想从模型中初始化值,请使用 setDate 方法。

这是一个例子:

@Html.TextBoxFor(m => m.DateOfBirth, new { style = "visibility: hidden; width: 0; height: 0;" })
<input type="text" id="DateOfBirthDisplay" readonly="readonly" />
<script>
    $(function() {
        $("#DateOfBirthDisplay").datepicker({
            dateFormat: "d M yy", //The format that you want for the display
            altFormat: "yy-mm-dd", //The format accepted by your controller
            altField: "#@Html.IdFor(m => m.DateOfBirth)"
        }).datepicker("setDate", "new Date(" + Model.DateOfBirth.ToString("yyyy, M-1, d") + ")");
    });
</script>