2012-11-28 30 views
0

我有以下模型屬性和屬性:ASP.NET MVC日期屬性忽略

[DataType(DataType.Date)] 
    public Nullable<DateTime> DateOfBirth { get; set; } 

我EditScreen.cshtml具有以下部分顯示的出生日期:

<div class="editor-label"> 
      Date of Birth 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.DateOfBirth) 
      @Html.ValidationMessageFor(model => model.DateOfBirth) 
     </div> 

然而,儘管DataType.Date屬性,完整的日期和時間顯示在頁面上,例如 06/04/1971 00:00:00

爲什麼日期的時間部分仍然顯示,是否有我錯過的任何'陷阱'?

我試過改變Nullable到日期時間,但沒有任何區別。必須有一些基本的東西阻止日期被格式化,但我不知道這可能是什麼,也不知道如何找出答案。

+0

TextBoxFor代替EditorFor怎麼樣? – middelpat

+0

Nope沒有任何區別 – Calanus

+0

將web.config中的globilization文件取出不起作用 – Calanus

回答

0

你可以嘗試添加

[DataType(DataType.Date)] 
    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] 
+0

不,那也沒用 - 對不起! – Calanus

1

你可能只需要創建一個模板編輯器修改日期格式在EditorFor。

爲此,請在Views \ Shared下創建一個新文件夾(如果它尚不存在),並將其命名爲「EditorTemplates」。在該文件夾內添加一個新的部分視圖並將其命名爲「DateTime.cshtml」。

裏面的新的 「DateTime.cshtml」 文件中添加以下代碼:

@model System.DateTime ? 
@Html.TextBox("", (Model.HasValue ? Model.Value.ToShortDateString() : string.Empty)) 
+0

這應該工作,但像其他所有東西一樣,似乎沒有區別... – Calanus

+0

也許嘗試將您的DataAnnotation更改爲'[DataType(DataType.DateTime)]'。 – Splendor

0
[DataType(DataType.Date)] 
(DataFormatString = "{0:MMMMMMMMMM dd,yyyy}")] 
public Nullable<DateTime> DateOfBirth { get; set; } 

試試這個。