首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自.NET模型的字节数组时间戳被成功地转换为可观测的,但提交值为null - KnockoutJS。

问来自.NET模型的字节数组时间戳被成功地转换为可观测的,但提交值为null - KnockoutJS。
EN

Stack Overflow用户
提问于 2014-03-26 23:45:51
回答 2查看 833关注 0票数 0

.NET + KnockoutJS,这里的演示,使用剔除-mapping.js进行映射

与纯application@Html.TextBoxFor(model=>model.questionarie.Sheets.ToList().Timestamp)一样,.NET显示了时间戳。使用淘汰赛什么都没有。

当我查看源时,序列化的对象数据如下所示

变量data={"questionarie":{"Sheets":[{"Groups":[{"GroupsOfQuestions":[{"Groups":null,的“问题”:[{“答案”:[{“问题”:null,“应答”:1,“问题”:1,“用户标识”:1,“值”:1,“用户”:null,“时间戳”:0,0,0,0,0,7,221.

同时也记录视图模型,时间戳也被转换成可观察的,但子标记值为null,请帮助!我能想到的唯一方法就是在模型类中再添加一个属性作为字节数组的字符串表示,让剔除提交字符串值而不是字节数组,但不要认为这是个好主意。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-31 02:05:21

默认的MVC3 ModelBinder为byte[]类型期望数据以Base64字符串的形式传输,但是JavascriptSerializer将它们作为数组推送出去。您有一个往返问题,如果不更改客户端或服务器端基础结构,就无法解决这个问题。

客户端

在发送到服务器之前,您需要将JSON中的时间戳编码为base64字符串。当您有时间戳属性时,向您的ko.toJSON添加一个替换函数以进行转换。

代码语言:javascript
复制
var convertTimestampToBase64String = function(data)
{
    var str = String.fromCharCode.apply(null,data);
    return btoa(str);
}

var timestampReplacer = function(key, value) {
    if ( key === 'Timestamp' && Array.isArray(value)) {
        return convertTimestampToBase64String(value);
    }
    return value;
}

self.submitSurvey = function () {
    $.ajax({
        url: "/Survey/SubmitSurvey/",
        type: 'post',
        data: ko.toJSON(self.mysurvey, timestampReplacer),
        contentType: 'application/json',
        success: function (result) {
            alert("survy is saved")
        }
    });
}

服务器端

另一种选择是将您的JSON序列化程序和值提供程序替换为另一个供应商,如JSON.NET。

票数 0
EN

Stack Overflow用户

发布于 2014-03-27 13:03:35

对不起,罗伯茨和帕特里克,下次我要发小提琴了,但是关于这个问题,小提琴也帮不上忙。被提交回后端的json数据(ko.toJSON(self.mysurvey))包含一个字符串表示,用于字节数组,如“时间戳”:0,0,0,0,0,1,17,133,问题是.NET将其转换为null。这里可以找到一个相关的问题:MVC3 -将字节数组发送到控制器-数据库RowVersion。因此,敲除是有效的,但也许还有另一种方法来更改时间戳“:0、0、0、0、0、1、17、133,可以识别为.NET控制器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22675438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档