2013-05-05 53 views
1

我有一個人以下模型:填充EditorFor的日期時間

public class Person 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    [Display(Name = "Id")] 
    public int Id { get; set; } 

    [Display(Name = "Name")] 
    [StringLength(30)] 
    public string Name { get; set; } 

    [Display(Name = "Last Name")] 
    [StringLength(30)] 
    public string LastName { get; set; } 

    [Display(Name = "Birth date")] 
    [DataType(DataType.Date)] 
    public DateTime BirthDate { get; set; } 

    [Display(Name = "Height")] 
    [Range(120,250, ErrorMessage="Wrong height!")] 
    public int Height { get; set; } 
} 

當我創建一個新的人,一般在數據庫與出生日期以下日期格式創建:DD.MM.YYYY

問題是當我試圖編輯該人的詳細信息時,出生日期不顯示在EditorFor字段內。顯示所有其他詳細信息,例如姓名,姓氏和身高,但不顯示出生日期。

所以,這一切顯示所有保存的正確值:

@Html.EditorFor(model => model.Person.Name) 
@Html.EditorFor(model => model.Person.LastName) 
@Html.EditorFor(model => model.Person.Height) 

但這並不顯示任何東西,或在某些瀏覽器會顯示一個沒有價值觀只是日期格式:

@Html.EditorFor(model => model.Person.BirthDate) 

當我看在網站的源代碼中,我可以看到有一個代表日期的值。它只是沒有顯示。我也嘗試用javascript填充它,但沒有成功。有任何想法嗎?

謝謝!

+0

你可能需要做一個@ Html.EditorFor(型號=> model.Person.BirthDate.ToString()) – 2013-05-05 09:36:49

+0

您可以嘗試使用日期時間格式字符串,因爲您的m/c中配置的日期時間不同於您的文化指定的日期時間。樣品: '@ Html.EditorFor(型號=> model.BirthDate.ToString( 「DD/MM/YYYY」))' – Saravanan 2013-05-05 09:39:54

+0

同時參閱問題這裏:http://stackoverflow.com/questions/7124434/display-只有日期和無時間c-sharp – Saravanan 2013-05-05 09:42:23

回答

7

看這個問題:MVC4 DataType.Date EditorFor won't display date value in Chrome, fine in IE

一個可能的解決方案:

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

謝謝。這很有幫助。 – Cristiano 2013-05-05 13:40:20

+0

現在唯一的問題是,它將一年設置爲0001,如果年份低於1753年,則會引發異常。我可以在控制器中設置一年到一個更可接受的值(如2013年),但我想知道你可能知道如何設置DateTime的年份範圍,因此如果用戶設置年份低於1753年,它將無法通過驗證? – Cristiano 2013-05-05 13:48:06

+1

@ZdravkoVajudin在這篇文章中創建屬於你自己的屬性:http://blogs.msdn.com/b/stuartleeks/archive/2011/01/25/asp-net-mvc-3-integrating-with-the-jquery-查看DateRangeAttribute代碼,你應該刪除MaxDate並使用Datetime.UtcNow(或Now) – webdeveloper 2013-05-05 19:35:19