在标准表单输入上发送Json数组

时间:2013-12-11 14:28:17

标签: jquery json forms asp.net-mvc-4

我有一个控件,它发出一个JSON数组,我需要在控制器上的模型上转换成一个列表,并试图找到一种通用的,可扩展的方法来实现这一点。我假设有一些简单而明显的东西。

所以我得到一个这样的数组:

{ 
  { AddressId: 1, HouseNumber: 1, Street: "Any Street" },
  { AddressId: 2, HouseNumber: 2, Street: "Any Street" },
  { AddressId: 3, HouseNumber: 5, Street: "Any Street" },
  { AddressId: 4, HouseNumber: 10, Street: "Any Street" },
  { AddressId: 5, HouseNumber: 1536, Street: "Any Street" }
}

模特:

public class AddressListModel {
   public string AnotherFormInput { get; set; }
   ...
   // A selection of other form input values that are on the page.
   ...
   public IList<AddressViewModel> Addresses { get; set; }
}

public class AddressViewModel { 
   public int AddressId { get; set; }
   public int HouseNumber { get; set; }
   public int Street { get; set; }
}

所以问题是,如果我已经在这个表单中有很多表单参数,并且我想在Form发布之前使用Javascript收集这个JSON数组,我怎么能认为将该数组附加为标准表格参数。

这不是通过Ajax完成的,只是标准的Form post。

2 个答案:

答案 0 :(得分:0)

使用JSON.stringify()将对象转换为字符串,然后将其插入到表单的隐藏输入参数中。主流浏览器支持;请参阅this,或者包括json2.js

你显然需要在服务器端使用JSON解析器;例如查看json.org的Java部分。

答案 1 :(得分:0)

我实际上最终做的是在表单上捕获提交,然后将输入字段插入到表单中,以便它们成为标准参数。

这不是一种优雅的方式,但它有效。