jQuery datePicker不尊重日期格式

时间:2012-06-14 11:55:11

标签: jquery asp.net-mvc jquery-ui-datepicker

我使用以下js在表单中设置了一个日期选择器:

$("#Expiry").datepicker({
   regional: 'en-GB',
   dateFormat: 'dd/mm/yy',
   firstDay: 1
});

并在我的视图中有以下内容(asp.net MVC)

<%: Html.TextBoxFor(m => m.Expiry) %>

在我的模型中,Expiry是可以为空的DateTime?

当我使用datepicker选择日期时,它使用正确的格式

当我从数据库加载数据时,它总是在时间部分结束时显示00:00:00

我怎么能不这样做呢?

如果我尝试在绑定中使用格式化表达式,那么它将无法编译。

当然jQuery应该尊重我为预先加载到表单字段中的值指定的格式?

它确实将日期选择器应用于该字段,因此我可以选择日历。它只是不将格式应用于加载的值

任何想法?

3 个答案:

答案 0 :(得分:5)

  

我怎么能不这样做呢?

您可以使用[DisplayFormat]属性修饰视图模型上的相应DateTime属性,该属性允许您指定格式:

public class MyViewModel
{
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
    public DateTime? Expiry { get; set; }

    ... other properties
}

并在视图中使用TextBoxFor调用替换EditorFor

<%: Html.EditorFor(m => m.Expiry) %>

答案 1 :(得分:3)

使用以下内容创建编辑器模板~/Views/Shared/EditorTemplates/DateTime.cshtml

@model DateTime?
@{
string finalDate = string.Empty;

if (Model != null)
{
    DateTime date = (DateTime)Model;
    finalDate = String.Format("{0:d}", date.Date.ToShortDateString());
}

@Html.TextBox(string.Empty, finalDate, new { @class = "datepicker" })

在你的View中写道(抱歉是razor语法,我不知道aspx语法)

@Html.EditorFor(model => model.Expiry)

因此,将来您不必担心应用程序中的日期格式。

答案 2 :(得分:0)

如果您的应用程序只有一种文化,您可以在web.config文件中设置文化,如下所示:

<globalization culture="en-US" />

或西班牙:

<globalization culture="es-ES" />

这样,绑定将考虑指定的格式来转换表单输入值。