我的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进行绑定。