我需要将检查过的复选框代码传递给JavaScript中的C#.我能够通过JSON发送代码.我的JSON值是JArray.我在标题中得到了例外.
JSON:
{
"Items": [
"100066",
"100067"
]
}
Run Code Online (Sandbox Code Playgroud)
C#:
public ActionResult UpdateTransportRequests()
{
string json;
using (var reader = new StreamReader(Request.InputStream))
{
json = reader.ReadToEnd();
}
JObject jo = (JObject)JsonConvert.DeserializeObject(json);
string lineItems = jo.Value<string>("Items");
RequestDataAccess rda = new RequestDataAccess();
decimal reqId = decimal.Parse(lineItems);
rda.ApproveReject_Request(reqId, "A", "");
return Json(new { result = "success" });
}
Run Code Online (Sandbox Code Playgroud)
客户端:
function approveAll(requestid) {
var items = [];
$('#grid tbody').find('input:checkbox:checked').each(function (index, item) {
var rowIndex = $(this).closest('tr').index();
items.push($('#grid tbody').find('tr:eq(' + rowIndex + ')').find('td:eq(1)').text().replace('TR-', ''));
});
$.ajax({
type: "POST",
url: '@Url.Action("UpdateTransportRequestsAll", "TransportRequest")',
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ "Items": items }),
success: function (response) {
alert(response.result);
},
dataType: "json"
});
}
Run Code Online (Sandbox Code Playgroud)
请帮我修复此错误.
Chr*_*tle 15
在这种情况下,我认为不JsonConvert.DeserializeObject适合使用.转换JArray为JToken可能发生的错误是因为DeserializeObject尝试直接反序列化JObject,这将失败,因为它将无法找到所需的字段JObject.
尝试使用JObject.Parse(json)获取dynamic对象.之后您可以像这样使用它:
dynamic jo = JObject.Parse(json);
var items = jo.Items;
foreach(var item in items)
{
string lineItem = (string) item;
decimal reqId = decimal.Parse(lineItem);
// Use as required
}
Run Code Online (Sandbox Code Playgroud)
Sha*_*arK 13
它可以从JArray转换为List as array.ToObject<List<TargetDataType>>();
| 归档时间: |
|
| 查看次数: |
39753 次 |
| 最近记录: |