2014-11-19 5 views
0

с помощью JQuery я сериализовать форма, и отправить его на сервер в этом формате:Получить список из HttpContext.request объекта

Object{ 
transactionID : "10779" 
itemList : [{itemName:"ball", quantity: 5}, {itemName:"stuff", quantity:10}] 
} 

В ModelBinder пользовательских ASP.NET, я делаю это:

HttpRequestBase request = controllerContext.HttpContext.Request; 
     List<Item> itemList = new List<Item>(); 

     foreach (var item in request.Form.Get("itemList")) 
     { 
      itemList.Add(new TransactionItemQuantity 
      { 
       name = item.itemName    
       quantity = item.quantity 
      }); 
     } 

     return new Transaction 
     { 
      transactionID = request.Form.Get("transactionTypeID"), 
      itemList = itemList 
     }; 
    } 

Однако цикл foreach не работает, поскольку IDE еще не знает, что request.Form.Get ("itemList") возвращает массив объектов. Как сделать код выше?

+0

Вы десериализируете строку JSON где-то сначала? – svanelten

+0

Нет, он используется как есть. – ohyeah

ответ

1

Если вы сделаете это так, вы получите только массив символов из запроса. Вам нужно десериализовать содержимое request.Form.Get("itemList") в список ваших товаров, затем вы можете их пропустить. Что-то вроде этого:

var list = JsonConvert.DeserializeObject<List<Item>>(request.Form.Get("itemList")); 

Вы также создать список типа Item первых, но при попытке добавить объекты типа TransactionItemQuantity в петле.

Редактировать: Добавлено пример

+0

Что мне нужно, спасибо! – ohyeah

Смежные вопросы