asp.net MVC:TryUpdateModel没有正确绑定DateTime

时间:2014-07-15 05:06:38

标签: 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.")]
    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中看到日期正确,并且在视图中输入了值,因此数据肯定会传递给控制器​​。

传递给控制器​​的值格式为: YYYY-MM-DD

我尝试使用多种格式动态修改此功能但没有成功。

我在这里做错了什么想法?

非常感谢

2 个答案:

答案 0 :(得分:2)

嗯,首先,我不知道你为什么要使用TryUpdateModel ..这太古怪了。

其次,听起来像你没有让你的文化接受你期望的格式。如果您的浏览器默认设置为正确的文化,请将以下内容添加到您的web.config中:

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

如果您想强制培养,请在此设置中设置您想要的文化。

答案 1 :(得分:0)

全球化并没有帮助,实际上已经设定了,但我意识到有一个自定义的日期时间活页夹,这可能是我的问题所在。

谢谢