Я пытаюсь отправить некоторые данные с html-страницы на контроллер MVC. Он отправляется как FormData через ajax и обрабатывается в контроллере как 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 ??
 }

Любая помощь?

Спасибо.

2
s.k.paul 18 Авг 2014 в 13:25
@Ehsan, мне это совершенно неизвестно. Если у вас есть идеи, как это сделать, поделитесь. Я думаю, ты этого не знаешь.
 – 
s.k.paul
18 Авг 2014 в 13:53

1 ответ

Лучший ответ

Попробуйте стригировать продукты и десериализовать их на сервере.

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

На сервере (предположим, что класс продукта с идентификатором, значением) с использованием JavaScriptSerializer

var serializer = new JavaScriptSerializer();
var productsStr = data["products"].ToString()
var deserializedProducts = serializer.Deserialize<List<Product>>(productsStr);
5
SSA 18 Авг 2014 в 13:53