Asp.net mvc 4 asp.net MVC:TryUpdateModel不';不能正确绑定日期时间

Asp.net mvc 4 asp.net MVC:TryUpdateModel不';不能正确绑定日期时间,asp.net-mvc-4,model-binding,Asp.net Mvc 4,Model Binding,我在MVC中使用TryUpdateModel时遇到日期属性绑定不正确的问题 我使用的是POCO类和相应的viewModel public class ContactModel { public int Id { get; set; } [Display(Name = "First Name")] [StringLength(50)] [Required(ErrorMessage = "First name must be entered.")] publ

我在MVC中使用TryUpdateModel时遇到日期属性绑定不正确的问题

我使用的是POCO类和相应的viewModel

public class ContactModel
{
    public int Id { get; set; }

    [Display(Name = "First Name")]
    [StringLength(50)]
    [Required(ErrorMessage = "First name must be entered.")]
    public string ContactGivenName { get; set; }

    [Display(Name = "Last Name")]
    [StringLength(50)]
    [Required(ErrorMessage = "Last name must be entered.")]
    public string ContactFamilyName { get; set; }

    ....

    [Display(Name = "Date of Birth")]
    public DateTime? DateOfBirth { get; set; }

}
实体类:

public class Contact 
{

    [Key]
    public int Id { get; set; }

    [StringLength(50)]
    [Column(TypeName = "varchar")]
    public string ContactFamilyName { get; set; }

    [StringLength(50)]
    [Column(TypeName = "varchar")]
    public string ContactGivenName { get; set; }

    ...

    [Column(TypeName = "date")]
    public DateTime? DateOfBirth { get; set; }

}
在我的控制器中:

 [HttpPost]
    [GridAction]
    public virtual ActionResult UpdateContact(int id, FormCollection form)
    {
        //Find a customer whose CustomerID is equal to the id action parameter
        var c = _contactService.Get(id);

        if (c != null)
        {

            //Perform model binding (fill the customer properties and validate it).
            if (TryUpdateModel(c, form))
            {
_contactService.Get从EntityFramework返回实例

TryUpdateModel正确地绑定了诸如名字和姓氏之类的字符串属性,但是尽管做了很多尝试,我还是无法让它绑定出生日期

我怀疑这是某种格式问题,但找不到它是什么

当我调试时,我可以在FormCollection中看到日期正确存在,并且在视图中输入了值,因此数据肯定会传递给控制器

传递给控制器的值的格式为: 年月日

我尝试用多种格式动态地修改它,但没有成功

知道我做错了什么吗


非常感谢

首先,我不知道你为什么要使用TryUpdateModel。。那太过时了

其次,在我看来,你还没有将你的文化设置为接受你所期望的格式。如果浏览器默认设置为正确的区域性,请将以下内容添加到web.config:

<system.web>
    <globalization culture="auto" uiculture="auto" enableclientbasedculture="true">
    </globalization>
</system.web>


如果要强制使用区域性,请在此设置中设置所需的区域性。

全球化没有帮助,实际上已经设置好了,但是我意识到Datetime有一个自定义绑定,这可能就是我的问题所在


谢谢

谢谢,为什么是古语?我通常将模型作为参数传递回去,在这种情况下,它不是我的代码,因此我必须适应TryUpdateModel。我可能会更改它,并使用automapper映射到我的实体类。