我试图通过jquery post
发布knockoutjs视图模型var $form = $('#barcodeTemplate form');
var data = ko.toJS(vm.Template);
$.post($form.attr('action'), data);
视图模型包含一些简单属性和一个复杂的数组 对象。这是JS对象:
data: Object
Description: "abcde"
Fields: Array[2]
0: Object
Id: 1
Length: 5
Start: 2
Type: "Code"
1: Object
Id: 2
Length: 4
Start: 8
Type: "Price"
length: 2
Flag: "02"
Id: 1
Type: "Embedded"
当序列化为表单数据时,它看起来像这样:
Id:1
Type: "Embedded"
Description: "abcde"
Fields[0][Type]:"Code"
Fields[0][Start]:2
Fields[0][Length]:5
Fields[1][Type]:"Price"
Fields[1][Start]:8
Fields[1][Length]:4
在控制器端,基本属性正确地反序列化(例如Id,Type),并且数组有两个元素,但是在这两个元素上(Type,Start等)都是0。
我怀疑是因为表单元素在数组属性上使用方括号表示法,而不是点符号,比如
字段[0]。键入
这是正确的吗?如果是这样,我如何更改此行为,以便MVC模型绑定器可以成功解码表单数据?
注意我也尝试过使用ko.utils.postJson,但这更糟糕 - 数组完全是空的。
答案 0 :(得分:0)
我尝试了各种建议,但最终放弃了,只是决定做一个正常的表格帖子,没有ajax的东西。这意味着在knockout管理的表单元素上设置正确的名称属性,但它可以工作。