从HttpContext.request对象获取列表

时间:2014-11-19 12:01:48

标签: c# jquery asp.net

使用jQuery我已经序列化了一个表单,并以这种格式将其发送到服务器:

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

在自定义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(&#34; itemList&#34;)返回一个对象数组。如何使上述代码有效?

1 个答案:

答案 0 :(得分:1)

如果你这样做,你只能从请求中获得一个char-array。您需要将request.Form.Get("itemList")的内容反序列化为项目列表,然后您可以循环遍历它们。 像这样:

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

您还首先创建类型为Item的列表,但尝试在循环中添加TransactionItemQuantity类型的对象。

编辑:添加了示例