相关疑难解决方法(0)

使用Asp.Net MVC和KnockoutJS处理日期

我最近开始使用KnockoutJs并很快意识到使用默认Json(myModelWithADate)导致默认的json编码.\/Date(-62135578800000)\/ 通过一些研究,我找到了四种可能的方法来处理dom元素中日期的显示.

1)创建一个绑定,处理从Json日期到您想要的格式的转换

ko.bindingHandlers.date = {
    init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
        var jsonDate = valueAccessor();
        var value = new Date(parseInt(jsonDate.substr(6)));
        var ret = value.getMonth() + 1 + "/" + value.getDate() + "/" + value.getFullYear();
        element.innerHTML = ret;
    },
    update: function(element, valueAccessor, allBindingsAccessor, viewModel) {

    }
};
Run Code Online (Sandbox Code Playgroud)

用法

<td data-bind="date: DueDate">
</td>
Run Code Online (Sandbox Code Playgroud)

2)从控制器返回"字符串"

return Json(new {MyDate = DateTime.Now.ToShortDateString()});
Run Code Online (Sandbox Code Playgroud)

3)使用JSON.NET指定在james.newtonking.com上看到的日期时间格式

string isoJson = JsonConvert.SerializeObject(entry, new IsoDateTimeConverter());
// {"Details":"Application started.","LogDate":"2009-02-15T00:00:00Z"}
Run Code Online (Sandbox Code Playgroud)

4)使用JSON.parse来处理您的日期,如此stackoverflow答案中所示.

JSON.parse(jsonText, function(key, value) …
Run Code Online (Sandbox Code Playgroud)

javascript asp.net asp.net-mvc json knockout.js

30
推荐指数
3
解决办法
2万
查看次数

ko.toJSON()是否适用于日期?

我在asp.net mvc页面上使用knockoutjs.我使用ajax通过调用将表单保存回服务器ko.toJSON(viewModel),然后使用jQuery将结果发回服务器.除了作为空对象持久化的Javascript日期之外,视图模型上的所有属性都已成功序列化.

宣言:

var viewModel = {
    startTime: ko.observable(),
    type: ko.observable(),
    durationInMinutes: ko.observable(),
    notes: ko.observable()
};
Run Code Online (Sandbox Code Playgroud)

保存数据:

var postData = ko.toJSON(viewModel); 
$.ajax({
    url: "/data",
    type: "POST",
    data: postData,
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    success: function () {
        console.log('success!');
    },
    error: function () {
        console.log('fail!');
    }
});
Run Code Online (Sandbox Code Playgroud)

viewModel.startTime()的console.log值是:

Date {Tue May 10 2011 11:30:00 GMT-0500 (Central Daylight Time)}

保存数据的第1行之后,postData的值为:

{
    "startTime": {},
    "type": "1",
    "durationInMinutes": "45",
    "notes": "asfasdfasdfasdfasdfasdfasdfas",
    "displayableStartTime": "10-May 11:30"
}
Run Code Online (Sandbox Code Playgroud)

如果我将保存数据的第1行展开到

var jsonEvent …
Run Code Online (Sandbox Code Playgroud)

ajax json knockout.js

7
推荐指数
1
解决办法
5935
查看次数

标签 统计

json ×2

knockout.js ×2

ajax ×1

asp.net ×1

asp.net-mvc ×1

javascript ×1