从mvc控制器中的FormCollection元素检索对象数组

时间:2014-08-18 09:25:33

标签: c# jquery asp.net-mvc formcollection

我试图将一些数据从html页面发送到mvc控制器。它通过ajax作为FormData发送,并在控制器中作为FormCollection处理。其中一个元素是一个对象数组。如何在控制器中检索此数组?

client code================

var products = []

 $('tr').each(function () {
    var row = $(this);
    var product = {};
    product.Id = row.find('.id').val();
    product.Id = row.find('.quantity').val();
    products.push(product);
 });

 var data = new FormData();
 data.append('PersonId', pid);
 data.append('SubmitDate', sdate);
 data.append('Products', products);


 Server code=================

 [HttpPost]
 public ActionResult SalesData(FormCollection data)
 {
     String personId=data["PersonId"].ToString();
     String submitDate=data["SubmitDate"].ToString();

     //how to retrieve Products ??
 }

任何帮助?

谢谢。

1 个答案:

答案 0 :(得分:4)

尝试对产品进行字符串化并在服务器上反序列化。

data.append('Products', JSON.stringify(products));

在服务器上(假设具有id,value的产品类)使用JavaScriptSerializer

var serializer = new JavaScriptSerializer();
var productsStr = data["products"].ToString()
var deserializedProducts = serializer.Deserialize<List<Product>>(productsStr);