回发后的模型绑定的DateTime属性为NULL

本文关键字:属性 NULL DateTime 模型 绑定 | 更新日期: 2023-09-27 18:20:18

我的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属性为NULL

有什么线索可以解释为什么日期时间绑定不起作用吗?

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