我想在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
。因此,当我使用格式dd/MM/yyyy
从datepicker中选择任意日期时,asp.net将使用格式MM/dd/yyyy
我尝试过:
我尝试使用DataAnnotations
:[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
:没有工作
我试图删除Jquery脚本,但没有工作
P / s:虽然日期时间文本框在第一次加载时包含time
部分,但在从日期选择器中选择日期后,time
部分已消失,但日期格式错误为我上面提到过:
答案 0 :(得分:1)
您的日期未正确绑定的原因是您的日期选择器使用的是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());