【问题标题】:How to scroll a "JSON from Viewmodel" array to change the date format for KnockoutJS?如何滚动“来自 Viewmodel 的 JSON”数组以更改 KnockoutJS 的日期格式?
【发布时间】:2012-02-09 08:46:02
【问题描述】:

我正在构建一个 MVC3 站点并首先使用 Knockout / JSON 时间,我是 JSON 的新手,并且不像我那样擅长 Javascript。 我在剃刀视图中使用 MVC3 模型,解析为 Json

cshtml中的模型是

@model IEnumerable<MySite.Models.UserViewModel> 

然后:

var initialData = @Html.Raw(Json.Encode(Model)); 
var viewModel = { 
                fields: ko.observableArray(initialData), 

等等……

在显示 数据等..但问题是在JSON数组/模型中有 我需要更改一些日期才能正确显示它们。

实际上日期显示为 /Date(1319929111857)/

我会滚动所有数组并截取标签“BirthDate”和 解析调用这样的函数的日期:

function formatJSONDate(jsonDate){ 
    var newDate = dateFormat(jsonDate, "mm/dd/yyyy"); 
    return newDate; 

我该怎么做? 我尝试了几个小时来使用下面这样的功能,但我不知道 如何调用 JSON 数组的 BirthDate: 标签并更改 内容:

formatDate: function() { 
         for (var i=0; i<this.fields().length;i++) 
        {//foreach JSON array item,find BirthDate: /Date(sssf) and encode it correctly} 

更改 JSON 将在视图中显示正确的数据。

之后,我需要能够使用 JqueryUI Datepicker 编辑字段并将所有数组重新发送到控制器并将 i 保存到数据库。 我做得很好还是有其他更好的方法可以做到这一点?

【问题讨论】:

    标签: json knockout.js


    【解决方案1】:

    您的 ViewModel 中的属性似乎是 DateTimes,这导致了您所看到的格式。它们需要是 DateTimes 吗?

    我会创建 ViewModel 字符串的属性并在服务器上进行格式化。在客户端进行处理是不必要的步骤。

    【讨论】:

    • 谢谢。所以你建议在将数据传递给模型之前将数据转换为控制器中的字符串?我会使用 Jquery 日期选择器,我记得它需要一个 DateTime 对象,如果不是也可以,但是如果它需要一个对象,我需要再次在客户端中转换它以正确显示日期..
    • @user1146891 - 即使使用 Jquery datepicker 也不应该成为问题。它具有帮助函数以您想要的格式解析和格式化日期。 $.datepicker.formatDate( format, date, settings ) - 将日期格式化为具有指定格式的字符串值。 $.datepicker.parseDate(format, value, settings) - 从指定格式的字符串值中提取日期。
    • @dmeel 完美,我在创建 JSON 之前转换了数据服务器端,现在它在视图上按预期工作。感谢您的宝贵时间
    猜你喜欢
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    • 2012-03-14
    相关资源
    最近更新 更多