【问题标题】:Model binding after post-back have DateTime properties as NULL回发后的模型绑定将 DateTime 属性设置为 NULL
【发布时间】:2014-09-03 00:50:42
【问题描述】:

我的 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;
            }

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

有什么线索说明为什么日期时间的绑定不起作用?

【问题讨论】:

  • 赞成,一直有这个问题,从来没有设法让它工作......

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


【解决方案1】:

有什么线索说明为什么日期时间的绑定不起作用?

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    相关资源
    最近更新 更多