【发布时间】:2019-05-24 09:44:22
【问题描述】:
当用户按下 Enter 键时,我正在使用 SlickGrid 并试图将数据从网格添加到数据库。它是 sendig 和 JSON 对象(例如{"name":"value"}),我需要它作为数组,因为我使用类型“System.Collections.Generic.List”。是否有可能在控制器中将其更改为 JSON 数组?
数据是从网格本身获得的。
提前致谢!
我见过一些类似的情况,但我仍然遇到错误:
Newtonsoft.Json.JsonSerializationException: '无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型 'System.Collections.Generic.List`1[DAL.SlickGridTest]' 因为该类型需要正确反序列化的 JSON 数组(例如 [1,2,3])。
这是我的行动public ActionResult EditGridEnter(string mydata)
这是我的jquery $.post
grid.onKeyDown.subscribe(function(e) {
var keyPressed = event.keyCode || event.which;
if (keyPressed == 13) {
var myJSON = JSON.stringify(item);
$.post("/SlickGridTest/EditGridEnter", $("input[name=mydata]").val(myJSON));
}
});
这是来自 item 的内容:
var idData = jsonResult[key].id + 1;
var item = { "id": idData, "t_nome": "", "t_prof": "", "t_data": "", "t_morada": "", "t_percCompleto": "" };
所有数据都来自 slickgrid 中的网格
这就是我反序列化对象的方式:
var slcgrd= JsonConvert.DeserializeObject<List<SlickGridTest>>(mydata);
我希望以数组的形式获取值(例如 [1,2,3]),而我得到的是 object ( Object {id: 43, t_nome: "name name", t_prof: "prof", …} )
【问题讨论】:
-
item中有什么内容? -
您的 MVC 操作需要一个字符串,因此您的问题缺少有关 如何 您尝试将该字符串反序列化为所需类型的信息,以及那是什么类型。您也没有描述您要发送的内容(即 JS 代码中
item的值) -
@GrafiCodeStudio 更新了代码,现在可以看啦!
-
那不就是把物品包装成一个数组那么简单吗?
var myJSON = JSON.stringify( [item] );? -
... 还是反序列化单个对象而不是列表?
var slcgrd= JsonConvert.DeserializeObject<SlickGridTest>(mydata);?
标签: javascript asp.net json asp.net-mvc