ODataController 将 json 转换为数组
ODataController converting json to array
这是前面一个问题的延续
我有一个 OData 控制器,其操作为:
[HttpPost]
[ODataRoute("PostUpdate")]
public async Task<string> PostUpdate(HttpRequestMessage eventsToUpdate)
{
//Do something
}
这就是我通过 ajax 调用调用控制器的方式:
var eventsToUpdate = [];
for(i=0;i<5;i++)
{
//Build the data
var updatedT = {
"Id" : (Id)?Id:0,
"Desc" : CalculatedDesc
}
eventsToUpdate.push(updatedT);
}
Url = "Api/Odata/PostUpdate"
$.ajax({
url :Url,
type:"POST",
data:eventsToUpdate ,
dataType : 'json',
success : function(result) {
}
});
问题是即使在将数组转换为 json 之后,数据在控制器的操作中也不可用。这就是我所做的
var eventsToUpdate = JSON.stringify(eventsToUpdate);
但如果我只是通过
var updatedT = {
"Id" : (Id)?Id:0,
"Desc" : CalculatedDesc
}
我在行动中得到相同的数据.对此的解决方案是什么?
在我看来
,您的[HttpPost]
期待一个名为 eventsToUpdate
的密钥,但它在发布的请求中找不到,因为它不存在,因为:
data:eventsToUpdate , // which is eq to = data:[{},{}...],
最好发送一个对象,例如:
data:{eventsToUpdate:eventsToUpdate} ,
//----^^^^^^^^^^^^^^---------this key will be captured at backend
contentType:'application/json', //<------you would need to add this
另一个建议是在需要时使用traditional:true,
。
另外,async Task<string>
如果返回类型是字符串,那么您也需要更改 ajax 的dataType
,或者您应该从 WebMethod 返回 json。
相关文章:
- 使用JS将数组转换为json对象
- 本地存储中的字符串到字节数组转换
- Javascript函数,用于将数组转换为“;2-元组”;
- php数组转换为javascript
- 在Javascript中将一个值和字符串数组转换为if语句
- 将数组转换为javascript格式的字符串
- 如何将数组转换为有效的json
- JSON数组转换为JS对象数组
- 如何将数组转换为映射
- JavaScript:将字符串数组转换为文本区域
- javascript |数组转换
- 数组转换为多个字符串
- Javascript将数组转换为字符串并使其反向输出
- 将Byte数组转换为Angularjs中的Base64字符串
- 将对象数组转换为与nodejs/pg/unnest兼容的数组
- 将Javascript数组转换为PHP数组
- 将数组转换为键值对
- 使用Ramda将对象数组转换为普通对象
- javascript将对象数组转换为字符串以存储在s3中
- 使用.join方法将数组转换为不带逗号的字符串