值“XX/YY/ZZZZ”对日期时间变量无效

本文关键字:时间 日期 变量 无效 ZZZZ XX YY | 更新日期: 2023-09-27 17:55:48

在我的网页上,我输入了保存当前日期的位置:

@Html.TextBoxFor(model => model.CreationDate, new { @class = "form-control datepicker", @Value = DateTime.Now.ToString("dd'/'M'/'yyyy"), type = "datetime" })

它呈现为:

<input value="31/3/2014" class="form-control datepicker" data-val="true" data-val-date="The field CreationDate must be a date." data-val-required="Data jest wymagana" id="CreationDate" name="CreationDate" type="datetime">

如您所见,默认数据31/3/2014

但是当我尝试使用 Ajax 将其发送到我的方法时,我收到来自ModelState的错误:

The value "31/3/2014" is not valid for CreationDate.

这就是模型中的内容:

+       CreationDate    {0001-01-01 00:00:00}   System.DateTime

此输入框也设置为bootstrap datepicker

$('.datepicker').datepicker({
        format: "dd/MM/yyyy",
        language: "pl",
        autoclose: true,
        todayHighlight: true
    });

返回如下数据:

"31/Marzec/2014"

数据高于ModelState.Valid=true

但是需要输入框默认数据应该是有效的。仅当用户需要更改为当前日期以外的数据时,才应使用日期选择器。

我应该如何修改我的代码?我尝试弄乱toString()格式,没有任何效果。

这是我的模型:

public class CreateDeviceInstance
{
    public int Id { get; set; }
    public int DeviceId { get; set; }
    public string SerialNo { get; set; }
    [Required(ErrorMessage="Data jest wymagana")]
    public System.DateTime CreationDate { get; set; }
    public Nullable<int> ProjectId { get; set; }
    public bool Issue { get; set; }
    public string IssueDetails { get; set; }
    public Nullable<int> StorageId { get; set; }
    public bool MeAsUser { get; set; }
}

值“XX/YY/ZZZZ”对日期时间变量无效

您最初使用的是"dd'/'M'/'yyyy"格式,

 (DateTime.Now.ToString("dd'/'M'/'yyyy"))

"dd/MM/yyyy"格式稍后,

 format: "dd/MM/yyyy"

这不好。
在这两种情况下使用相同的格式(我建议"dd/MM/yyyy")。

试试这个

public class CreateDeviceInstance 
{    
    public int Id { get; set; }
    public int DeviceId { get; set; }
    public string SerialNo { get; set; }
    [Required(ErrorMessage="Data jest wymagana")]
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
    public System.DateTime CreationDate { get; set; }
    public Nullable<int> ProjectId { get; set; }
    public bool Issue { get; set; }
    public string IssueDetails { get; set; }
    public Nullable<int> StorageId { get; set; }
    public bool MeAsUser { get; set; }
}
DateTime.Now.ToString("dd/MM/yyyy")

> "31/Marzec/2014" 格式:"dd/MM/yyyy";不要使用大写字母来指定月份。引导日期选择器格式的日期格式:"dd/mm/yyyy"您的结果将更改 31/03/2014