从日期时间类型将视图中的元素自动映射到模型

Posted

技术标签:

【中文标题】从日期时间类型将视图中的元素自动映射到模型【英文标题】:auto-mapping of element in view to model from type dateTime 【发布时间】:2014-01-18 21:13:16 【问题描述】:

我有一些日期时间格式的文本框值(DatePicker 提供的默认值 - 例如 - 01/23/2014)。

  <input type="text" name="OrderDate" value="" id="OrderDate" class="datepicker field field119 datepicker-init" />

我在模型类中有与视图中的元素名称和 ID 相同的相关属性。

 public DateTime OrderDate  get; set; 

此时一切都已匹配,一旦提交,我就会在控制器中获得正确的值。

现在 - 我想更改默认的 DatePicker 格式 - 例如:

$(".datepicker").datepicker(
                minDate: 0,
                dateFormat: 'dd/mm/yy'
            );

并且我未能“解释”模型属性如何对文本框值进行序列化 - 相反,我得到了默认的 DateTime 而不是我的时间。

问题:如何更改 DateTime 属性知道的文本框日期格式如何序列化?

【问题讨论】:

【参考方案1】:

好的,这就是你的工作方式。

首先,jQuery UI 使用 dd/mm/y 格式化您需要的日期,因此您需要将您的 javascript 更改为:

$(".datepicker").datepicker(
                minDate: 0,
                dateFormat: 'dd/mm/y'
            );

在此处查看 jsFiddle:

http://jsfiddle.net/hutchonoid/Fa8Xx/1376/

然后你需要在视图中格式化模型日期,你可以这样做:

@html.TextBoxFor(m => m.OrderDate, String.Format("0:dd/M/yy", Model.OrderDate),
  new  @class = "datepicker field field119 datepicker-init" )

当将日期发回服务器时,这很好地与模型绑定配合使用。

【讨论】:

很快就会尝试-您认为该类的属性可以接受吗?我是否需要“告诉”属性它将获得的值格式(在属性或其他内容中)? 谢谢!我在视图类中遇到了一些异常,我会调查:App_Web_de2tc4rb.dll 中发生了“System.NullReferenceException”类型的异常,但未在用户代码中处理 没有问题。您是否将模型传递回具有填充日期的视图? 是的,实际上框架是这样做的——我所做的只是在一个获取此类对象的函数上声明,并且匹配在下面完成:[HttpPost] public ActionResult OrderSubmit(OrderDetails orderDetails)。 ....也许格式不正确? 让我们continue this discussion in chat

以上是关于从日期时间类型将视图中的元素自动映射到模型的主要内容,如果未能解决你的问题,请参考以下文章

将 Joda 时间映射到 Cassandra 的日期类型

引导日期选择器未在 editorFor 中显示模型值

JPA/Hibernate 将简单字符串或任意对象映射到 mysql 日期类型?

Drupal 视图暴露的过滤器日期时间弹出窗口

如何将javascript绑定到MVC5视图中创建的表中的checkboxes和datetimepicker

json中的String类型的日期为啥自动转换成date类型