南希:使用POST请求中的数据数组

时间:2013-04-29 15:04:35

标签: .net rest post nancy

我需要从我的Web应用程序向我的Nancy Web服务发送一个对象数组,以便更新我的数据库。

只发送一个对象,它运行正常:在我的Web方法中,我使用Request.Form.<data>.Value.Trim()获取数据。但是,如果我尝试发送一组数据,那就行不通了。

那么如何在我的Nancy web方法中获取和处理数据数组呢?

- &gt;我尝试发送的序列化对象:
“数据[0] [ID] = 56&安培;数据[0] [SatisM] = 1&安培;数据[0] [类型] = 0&安培;数据[0] [评注] = COM&安培;数据[0] [月] = 3和;数据[1] [ID] = 57&安培;数据[1] [SatisM] = 2及数据[1] [类型] = 1&安培;数据[1] [评注] = COM1&安培;数据[1] [月] = 3和;数据[2] [ID] = 58&安培;数据[2] [SatisM] = 1&安培;数据[2] [类型] = 2及数据[2] [评注] = COM2&安培;数据[2] [月] = 3和;数据[3] [ID] = 59&安培;数据[3] [SatisM] = 3及数据[3] [类型] = 3及数据[3] [评注] = COM3&安培;数据[3] [月份] = 3 “

- &GT;相同但编码 %22data%5B0%5D%5BId%5D = 56&安培;数据%5B0%5D%5BSatisM%5D = 1&安培;数据%5B0%5D%5BType%5D = 0&安培;数据%5B0%5D%5BCommentaire%5D = COM&安培;数据%5B0%5D%5BMonth%5D = 3及数据%5B1%5D%5BId%5D = 57&安培;数据%5B1%5D%5BSatisM%5D = 2及数据%5B1%5D%5BType%5D = 1&安培;数据%5B1 %5D%5BCommentaire%5D = COM1&安培;数据%5B1%5D%5BMonth%5D = 3及数据%5B2%5D%5BId%5D = 58&安培;数据%5B2%5D%5BSatisM%5D = 1&安培;数据%5B2%5D %5BType%5D = 2及数据%5B2%5D%5BCommentaire%5D = COM2&安培;数据%5B2%5D%5BMonth%5D = 3及数据%5B3%5D%5BId%5D = 59&安培;数据%5B3%5D%5BSatisM %5D = 3及数据%5B3%5D%5BType%5D = 3及数据%5B3%5D%5BCommentaire%5D = COM3&安培;数据%5B3%5D%5BMonth%5D = 3%22

2 个答案:

答案 0 :(得分:2)

根据您的问题,我认为您是从表单发送数据作为GET请求。我遇到了类似的问题,但是我在POST请求中发送了数据。也许它也适合你:

要发送数组,属于该数组的所有表单元素都需要相同的名称:

<强> WRONG

<input name="MyArray[0]" value="x" />
<input name="MyArray[1]" value="y" />

从右

<input name="MyArray" value="x" />
<input name="MyArray" value="y" />

有了这个,Nancy将正确解析您的数据。为了能够以数组形式访问它,您需要使用Model Binding

顺便说一句,我没有得到使用表单作为数据源的对象数组,只有基本类型的数组。但是,当您发送使用XHR格式化的数据JSON时,对象数组可以正常工作。但我不能说你的情况是否可行。

答案 1 :(得分:1)

我不确定你的上下文是什么意思'发送'一个对象(http POST?)或'Web方法'(南希模块?)。也许一些代码有助于澄清?

无论如何,也许你可以使用Nancy的模型绑定功能。这是另一个显示如何的问题。

Model-bind POST with Array of objects in NancyFx