我的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的绑定不起作用的任何线索?
答案 0 :(得分:4)
为什么绑定datetime不是'工作
它按预期工作。默认的ModelBinder仅绑定到特定的日期时间格式。我认为问题是你假设DisplayFormatAttribute
对ModelBinder有一些影响。如属性所述,它仅适用于显示格式,不适用于模型绑定。如果你有自定义的DateTime格式(你这样做),那么你需要写一个custom DateTime model binder来绑定它。