2012-07-22 65 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