为DateTime填充EditorFor

时间:2013-05-05 09:24:48

标签: c# .net asp.net-mvc asp.net-mvc-4 razor

我有一个人的以下模型:

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; }
}

当我创建一个新Person时,它通常在数据库中创建,具有BirthDate的以下日期格式: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填充它但没有成功。有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:7)

看看这个问题:MVC4 DataType.Date EditorFor won't display date value in Chrome, fine in IE

可能的解决方案之一:

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