使用Jquery Datepicker的DateFormat错误

我想在DateTime文本框中排除time部分,但我无法按照我想要的方式使其工作。

这是我设置字段的方式:

 @Html.TextBoxFor(m => m.DateFrom, "{0:dd/MM/yyyy}", new { @class = "datefrom" }) @Html.TextBoxFor(m => m.DateTo, "{0:dd/MM/yyyy}", new { @class = "dateto" }) 

Jquery脚本:

  $(function () { $(".datefrom").datepicker({ defaultDate: "+1w", changeMonth: true, numberOfMonths: 1, dateFormat: "dd/mm/yy", onClose: function (selectedDate) { $("#to").datepicker("option", "minDate", selectedDate); } }); $(".dateto").datepicker({ defaultDate: "+1w", changeMonth: true, numberOfMonths: 1, dateFormat: "dd/mm/yy", onClose: function (selectedDate) { $("#from").datepicker("option", "maxDate", selectedDate); } }); }); 

现在我有这些问题:

  • time总是出现在现场:

在此处输入图像描述

  • date format错误:我的格式是dd / MM / yyyy,日期是November 8th 2014但现在日期选择器“认为”是August 10th 2014 。 因此,当我从datepicker中选择格式为dd/MM/yyyy的任意日期时,asp.net将使用格式MM/dd/yyyy

我试过的:

  • 我尝试使用DataAnnotations[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] :没有工作

  • 我试图删除Jquery脚本,但没有工作

P / s:虽然日期time文本框包含第一次加载时的time部分,但是从日期选择器中选择日期后, time部分消失了,但日期格式错误,如上所述:

在此处输入图像描述

您的日期未正确绑定的原因是您的日期选择器使用的是dd/MM/yyy格式,但您的服务器使用的是MM/dd/yyyy格式。 要使其工作,您可以创建自定义模型绑定器来处理DateTime值并将其解析为所需的格式。

 public class CustomDateTimeBinder : IModelBinder { public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName); CultureInfo culture = new CultureInfo("en-GB"); // dd/MM/yyyy var date = value.ConvertTo(typeof(DateTime), culture); return date; } } 

并在Global.asax注册它(这意味着它将适用于所有DateTime

 ModelBinders.Binders.Add(typeof(DateTime), new YourAssembly.CustomDateTimeBinder());