2011-12-01 21 views
3

當我註冊用戶時,我有我的數據庫有一個DateTime類型的DateTime類型。DateTime的問題,它出現在00:00:00

當我收到我的數據備份,編輯登記表,我有我的剃鬚刀這樣的:

@Html.TextBoxFor(model => model.Birthdate) 

的日期顯示是這樣的:28/05/1983 00:00:00

我只想要生日,顯然。在我的控制器中,我有這個:

User userset = db.User.Find(id); 
return View(userset); 

非常簡單...任何人都可以幫助我解決這個問題嗎?

回答

2

你可以做這樣的事情用Html.TextBox,而不是使用Html.TextBoxFor

@Html.TextBox("Birth date", String.Format("{0:dd/MM/yyyy}", Model.Birthdate)) 
+0

你的方法似乎很簡單,但在這種情況下,我的TextBoxFor內容將與這一個混合。我如何在我的控制器中獲取這些數據? –

3

將DisplayFormat數據註釋設置在模型屬性的上方。

public class User 
{ 
    [DisplayFormat(DataFormatString = "{0:dd/MM/yy}", ApplyFormatInEditMode = true)] 
    public DateTime Birthdate { get; set; } 

    ... 
} 

。然後,而不是使用@Html.TextBoxFor(..)使用@Html.EditorFor(...)

查看DisplayFormatAttribute MSDN page瞭解更多詳情。

如果您使用EF生成了您的數據模型,您可以簡單地爲您的類創建一個元類以應用數據註釋。例如,如果我的db文件被稱爲MyDB.edmx,請創建一個名爲MyDB.cs的夥伴類文件。然後裏面就有,我會在元類元數據類連接到它,並指定數據註釋擴展User類:

[MetadataType(typeof(UserMetaData))] 
public partial class User{ } 

public class UserMetaData 
{ 
    [DisplayFormat(DataFormatString = "{0:dd/MM/yy}", ApplyFormatInEditMode = true)] 
    public DateTime Birthdate { get; set; } 
} 

,如果我們使用的是圖形化的工具見Scott Gu's post on validation,主要是部分「但是什麼對於我們的ORM映射?'

+0

謝謝@ link664,但我不能這樣做,我有我的生成我的數據庫上下文類的代碼,它不接受放置這一行,你表現出它裏面......那裏有任何其他方式做到這一點? –

+0

您是如何使用實體框架生成數據庫上下文類的? – link664

+1

我導入了System.ComponentModel.DataAnnotations;在我生成的Model類中使用,是的我使用EF生成的,我發佈了[DisplayFormat(DataFormatString =「{0:dd/MM/yy}」,ApplyFormatInEditMode = true)],因爲你建議在Birthdate行,但它一直不工作... –