为什么我的DateTime格式错误,因此数据并不总是被传回

时间:2017-04-26 15:29:03

标签: c# jquery jquery-ui-datepicker

我有一个C#MVC页面,除了设置的一个日期/时间外,所有其他数据都正确地传回控制器。我正在使用JQuery DatePicker。 ViewModel中的相关属性是

   [Required(ErrorMessage = "Please Select Delivery Date")]
    [Display(Name = "Delivery Date", Prompt = "Please Select Delivery Date", Description = "Delivery Date")]
    [UIHint("DateTime")]
    [DataType(DataType.Date)]
    public DateTime? DeliveryDate { get; set; } 

我的DateTime Controls编辑器是;

@Html.TextBox("", value, new { @class = "datefield", type = "date", @width= "100px" })

观看代码

<div class="control-group">
    @Html.LabelFor(x => x.DeliveryDate, new { @class = "control-label" })
    <div class="controls">
        @Html.EditorFor(x => x.DeliveryDate)
        @Html.ValidationMessageFor(x => x.DeliveryDate, String.Empty, new { @class = "error" })
    </div>
</div>

Javascript是

$(function () {

$.validator.addMethod('date',
function (value, element) {
    if (this.optional(element)) {
        return true;
    }
    var ok = true;
    try {
        $.datepicker.parseDate('dd/mm/yy', value);
    }
    catch (err) {
        ok = false;
    }
    return ok;
});
$(".datefield").datepicker({ dateFormat: 'dd/mm/yy', changeYear: true, altFormat: 'yy-mm-dd' });
}); 

在页面运行时查看源代码,并且DeliveryDate字段具有正确的ID和名称,因此它绑定到ViewModel。另外,如果我选择日期为12或更少的日期,则整个过程都有效,因此它必须是格式化问题。但据我所知,我已正确设置。

1 个答案:

答案 0 :(得分:0)

只要您必须验证日期并发送格式正确的值日期即可添加moment.js。 另一件事是{date}的dateFormat是日期的显示,而不是组件价值的格式。

修改

试试这个

$(".datefield").datepicker({ dateFormat: 'dd/mm/yy', changeYear: true, altField: 'DeliveryDate', altFormat: 'yyyy-mm-dd' });

您可以在模型中检索参数DeliveryDate作为日期。