jquery发布表单数据和MVC模型绑定器

时间:2016-01-19 05:08:11

标签: jquery asp.net-mvc knockout.js

我试图通过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,但这更糟糕 - 数组完全是空的。

1 个答案:

答案 0 :(得分:0)

我尝试了各种建议,但最终放弃了,只是决定做一个正常的表格帖子,没有ajax的东西。这意味着在knockout管理的表单元素上设置正确的名称属性,但它可以工作。