2012-07-22 69 views
1

我的模型有一个DateTime字段:DateTime字段验证失败与时间包括

@model Nullable<System.DateTime> 

@if (Model.HasValue) { 
@Html.TextBox("" , String.Format("{0:dd/MM/yyyy HH:mm:ss}" , Model.Value) , new {  @class = "span3 disabled" }) 
} 
else { 
@Html.TextBox("" , String.Format("{0:dd/MM/yyyy HH:mm:ss}" , DateTime.Now) , new { @class = "span3 disabled" }) 
} 

在我看来,语法是::

<div class="editor-label"> 
     @Html.LabelFor(model => model.TimeBooked) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.TimeBooked) 
     @Html.ValidationMessageFor(model => model.TimeBooked) 
    </div> 

[UIHint("DateTimeHHMM")] 
    public DateTime TimeBooked { get; set; } 

它使用EditorTemplate呈现

在视图中创建记录时,当我在文本框中单击“保存”按钮时:

22/07/2012 18:33:29 
  • 我得到验证消息:

现场TimeBooked必须是日期。

我的模型或编辑器模板有什么问题吗?

谢谢

马克

+1

我认为这与日期作为不变文化处理的方式有关。你在用什么文化?它是'en',就像你的例子? – rcdmk 2012-07-22 17:57:02

+0

嗨,是的,我的页面顶部有。 THanks,马克 – Mark 2012-07-22 19:08:02

+0

嗨 - 看起来,视图/模型预计日期格式为MM/dd/yyyy - 尽管我明确地将其设置为dd/MM/yyyy以上 - 有什么办法可以强制它使用我选择的格式? – Mark 2012-07-22 19:47:16

回答

1

您应该确保应用程序在正确的语言(的CultureInfo)上运行,特别是当它涉及到日期(和数字)格式。

您可以在web.config文件中执行此操作。

<system.web> 
    <globalization culture="en-GB" uiCulture="en-GB"/> 

你应该将其设置为任何地区/国家符合您的需求,这样.NET将处理解析数字和日期正确。

+0

嗨 - 谢谢 - 我试过了,但它仍然不允许(例如)22/07/2012 - 我认为它必须以某种方式编辑模板 - 当我将格式更改为yyyy-mm-dd(它不是不可读)它可以正常工作??! – Mark 2012-07-22 21:03:43

+0

如果您在代码中放置了一个断点,请求对象中的值看起来像什么?你在使用哪个地区/国家?该日期格式不看英文。 – 2012-07-23 05:50:20

+0

嗨 - 它看起来像:#22/07/2012# - 我的代码应该格式化为dd/MM/yyyy(这是英国显示日期的方式) - 我知道VS是美国人,并且因此#22/07/2012#是无效的,因为没有“月”编号为22.我想我可能会恢复到yyyy-mm-dd - 因为没有使用它的混淆。非常感谢你的帮助。 – Mark 2012-07-23 09:41:19