I need to pass the checked check-boxes code to C# from JavaScript. I was able to send the code via JSON. And my JSON value comes as a JArray. And I am getting the exception in the title.
JSON:
{
"Items": [
"100066",
"100067"
]
}
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" });
}
Client Side:
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"
});
}
Please help me to fix this error.
It can be converted from JArray to List as array.ToObject<List<TargetDataType>>();
In this situation, I don't think JsonConvert.DeserializeObject is the appropriate method to use. The error about converting from JArray to JToken likely occurs because DeserializeObject is attempting to directly deserialize to JObject, which will fail because it won't find the required fields on JObject.
Try using JObject.Parse(json) to get a dynamic object. You can use it like this afterwards:
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
}
public ActionResult UpdateTransportRequests()
{
string json;
using (var reader = new StreamReader(Request.InputStream))
{
json = reader.ReadToEnd();
}
dynamic jo = JObject.Parse(json);
foreach (var item in jo.Items)
{
decimal reqId = (decimal)item;
RequestDataAccess rda = new RequestDataAccess();
rda.AllApproveReject_Request(reqId, "A", "");
}
return Json(new { result = "success" });
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With