MVC& EF:从日期时间中删除时间

时间:2013-11-08 11:49:01

标签: c# jquery asp.net-mvc entity-framework datetime

我有一个包含日期时间字段的模型 它预先存在的DB中的列的数据类型为“date”,因此它没有时间值 在我的视图中,模型日期字段绑定到jquery-ui日期选择器 页面加载时,它有时间值:1989/02/14 12:00:00 AM 如何防止添加时间值?
我是否必须使用jQuery为每个日期字段手动删除时间部分?

修改 当页面加载它时,没有必要编辑模型

控制器:

ClientModel c = DBContext.Clients.find(id);
//Doing any kind of date formatting here to c.DateOfBirth is ignored
return PartialView("_ClientDetailsView", c);

查看:

@Html.TextBoxFor(model => model.DateOfBirth , new { @class = "date-field" })

我认为解决方案类似于模型属性或HtmlHelper参数。

2 个答案:

答案 0 :(得分:1)

您可以使用DataType属性。用DateOfBirth装饰ClientModel中的public class ClientModel { [DataType(DataType.Date)] public DateTime DateOfBirth { get; set; } } 属性:

DataType

另见DataType enum

<小时/> 如果[DisplayFormat(DataFormatString = "dd MM, yyyy")] public DateTime DateOfBirth { get; set; } 属性不符合您的需求,您还可以使用DisplayFormat属性:

{{1}}

答案 1 :(得分:1)

感谢Henk的帮助

最后,我厌倦了尝试找到一个“正确”的解决方案,所以我编写了以下jquery函数,并根据需要在每个页面上调用它。

function DropTimeSegments() {
$(".datepicker").each(function (index, item) {
    $(item).val(FormatDate(new Date($(item).val())));
});

function FormatDate(Date) {
    return Date.getFullYear() + '-' + pad(Date.getMonth(), 2) + '-' + pad(Date.getDate(), 2);
}

function pad(num, size) {
    var s = num + "";
    while (s.length < size) s = "0" + s;
    return s;
}