post-back后的模型绑定将DateTime属性设置为NULL

时间:2014-09-02 16:26:14

标签: c# asp.net-mvc model-binding datetime-format

我的ASP.NET MVC视图模型具有日期时间属性,如:

    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "yyyyMMdd")]
    public DateTime DateOfBirth { get; set; }

我的控制器操作有:

[HttpPost]
public JsonResult OnCreate(MyViewModel model) 
{

}

我的属性是绑定的,期望日期时间属性。

我输入的日期如下:

19500125 

这是1950年1月25日这是我的日期格式设置为:yyyyMMdd

如果我执行以下操作,则可以使用:

            DateTime dateOfBirth;
            if (DateTime.TryParseExact(Request["User.dateOfBirth"], "yyyyMMdd", CultureInfo.InvariantCulture,
                DateTimeStyles.None, out dateOfBirth))
            {
                model.User.DateOfBirth = dateOfBirth;
            }

但是上面没有使用内置绑定,并且不是正确的做事方式。

为什么datetime的绑定不起作用的任何线索?

1 个答案:

答案 0 :(得分:4)

  

为什么绑定datetime不是'工作

它按预期工作。默认的ModelBinder仅绑定到特定的日期时间格式。我认为问题是你假设DisplayFormatAttribute对ModelBinder有一些影响。如属性所述,它仅适用于显示格式,不适用于模型绑定。如果你有自定义的DateTime格式(你这样做),那么你需要写一个custom DateTime model binder来绑定它。