我有一个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或更少的日期,则整个过程都有效,因此它必须是格式化问题。但据我所知,我已正确设置。
答案 0 :(得分:0)
只要您必须验证日期并发送格式正确的值日期即可添加moment.js。
另一件事是{date}的dateFormat
是日期的显示,而不是组件价值的格式。
修改强>
试试这个
$(".datefield").datepicker({ dateFormat: 'dd/mm/yy', changeYear: true, altField: 'DeliveryDate', altFormat: 'yyyy-mm-dd' });
您可以在模型中检索参数DeliveryDate作为日期。