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

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


我的控制器动作有:

[HttpPost]
public JsonResult OnCreate(MyViewModel model)
{

}


我的属性确实绑定了,期望有datetime属性。

我输入的日期如下:

19500125


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

如果我执行以下操作:

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


但是以上内容并未使用内置绑定,也不是正确的处理方式。

有什么线索为什么不能绑定日期时间?

最佳答案

有什么线索为什么不能绑定日期时间?


它按预期工作。默认的ModelBinder仅绑定到特定的日期时间格式。我认为问题在于您假设DisplayFormatAttribute对ModelBinder有一些影响。正如该属性所指出的,它仅适用于“显示格式”,而不适用于模型绑定。如果您具有自定义的DateTime格式(您可以执行此操作),则需要编写custom DateTime model binder进行绑定。

10-08 09:27
查看更多