首页 > 解决方案 > MVC 模型在德国日期更改日期和月份

问题描述

我尝试了几种方法,但我不知道为什么,但这让我感到困惑。

模型:

public class SearchViewModel
    {        
        [DisplayName("Date from:")]
        //[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{dd.MM.yyyy}")]
        public DateTime? DateFrom { get; set; }

        [DisplayName("Date to:")]
        public DateTime? DateTo { get; set; }
    }

看法:

@using (Html.BeginForm("SearchResult", "Search", FormMethod.Get, new { @id = "searchForDate" }))
{
    <div id="criterias">


        @Html.LabelFor(m => m.DateFrom)
        @Html.EditorFor(m => m.DateFrom, new { htmlAttributes = new { @class = "searchinput datepicker" } })

        @Html.LabelFor(m => m.DateTo)
        @Html.EditorFor(m => m.DateTo, new { htmlAttributes = new { @class = "searchinput datepicker" } })
</div>
    <button type="submit" class="btn btn-danger" style="background-color:#991821; margin-top:15px;" id="search">Search</button>
}

问题:

日期选择器工作正常。当我加载页面时,我单击 EditorFor DateFrom框并选择一个日期,比如说 02.01.2019(2019 年 1 月 2 日)。当我单击提交时,它会跳入控制器操作。

在控制器中的动作model.DateFrom是改变日期和月份。这意味着它突然是 01.02.2019(2 月 2 日),这是完全错误的。12当我在上面选择一天model.DateFrom是无效的。

我尝试了以下事情:

我还看到了这篇文章:MVC DateTime binding with wrong date format ,但不幸的是我知道这不是很好。

我不知道为什么会发生这种情况,更重要的是发生在哪里?我将断点放入 Internationalization 类中,将 bp 直接放在SearchControlleraction 下。没有任何帮助。当我单击提交按钮时,日期和月份正在改变位置......

标签: c#datedatetimemodel-view-controllermodel

解决方案


您可以尝试检查“接受语言”HTTP 请求标头。只需弹出开发工具网络选项卡,然后单击您的请求标头进行搜索。

accept-language:en-US,en;q=0.9

这是预期的吗?

另外,请看这个问题:

日期格式不正确的 MVC DateTime 绑定

具体来说,这个资源来自答案:

https://weblogs.asp.net/melvynharbour/mvc-modelbinder-and-localization

希望能帮助到你!

编辑:另外,如果你还没有,我建议对所有服务器端日期使用 UTC。客户端日期可以/应该是当地时间。


推荐阅读