【问题标题】:Datetime null when submit a form .NET MVC [duplicate]提交表单.NET MVC时的日期时间为空[重复]
【发布时间】:2017-10-18 08:23:24
【问题描述】:

我的模型有这样的属性TimeScheduleOnUtc

[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy HH:mm}")]
public DateTime? TimeScheduleOnUtc { get; set; }

我的表格有

<input type="text" class="form-control datetimepicker" placeholder="MM/dd/yyyy HH:mm" name="TimeScheduleOnUtc" />

但是当我提交表单时,我总是在TimeScheduleOnUtc 中得到一个空值。它只是发生在我的电脑上,我所有的成员似乎都工作正常。我找不到原因,我该如何解决。我认为这可能是一个错误,取决于我计算机上的日期时间配置。

【问题讨论】:

  • Tl;Dr MVC 不理解你的日期格式
  • 但是你知道为什么我所有会员的电脑都可以使用这种格式
  • 一句话文化

标签: c# asp.net-mvc forms date


【解决方案1】:

检查您的应用程序文化是否支持这种日期格式。我在完全相同的日期格式上遇到了一些问题。解决方案是在我的控制器的constructor 中设置更改当前文化。

试试这个:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");

附加:要检查所有受支持的日期时间格式,您可以直接在您的view 中使用我的要点code 中的代码

@{ 
    var dateInfo =  System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat;
}
    @foreach (var item in dateInfo.GetAllDateTimePatterns())
    {

        <div>@item</div>
    }

我相信有更好的方法来解决这个问题,但现在可以用作解决方法。

【讨论】:

    【解决方案2】:

    感谢您的所有回答。最后,我发现解决方案是我需要从

    更改我的 javascript 中的 datetimepicker 配置
            $('.datetimepicker')
                .datetimepicker({
                    format: 'mm/dd/yyyy hh:ii',
                    autoclose: true,
                    startDate: new Date()
                });
    

          $('.datetimepicker')
            .datetimepicker({
                format: 'MM/dd/yyyy hh:ii',
                autoclose: true,
                startDate: new Date()
            });
    

    所以我将 mm 更改为 MM。它在我的电脑上运行良好,但在你的电脑上可能不行。所以要小心使用它。希望以后对你有所帮助。

    【讨论】:

    • 这是ii 分钟的正确格式吗?我从未在JavaScriptASP .NET MVC 中看到过
    猜你喜欢
    • 2019-12-02
    • 1970-01-01
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 2020-04-14
    • 2013-07-02
    相关资源
    最近更新 更多