Je dois passer le code des cases à cocher cochée à C # à partir de JavaScript. J'ai pu envoyer le code via JSON. Et ma valeur JSON vient en tant que JArray. Et je reçois l'exception dans le titre.
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" });
}
Côté client:
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"
});
}
S'il vous plaît, aidez-moi à corriger cette erreur.
Dans cette situation, je ne pense pas que JsonConvert.DeserializeObject
soit la méthode appropriée à utiliser. L'erreur concernant la conversion de JArray
en JToken
est probable car DeserializeObject
tente de désérialiser directement en JObject
, ce qui échouera car il ne trouvera pas les champs obligatoires sur JObject
.
Essayez d’utiliser JObject.Parse(json)
pour obtenir un objet dynamic
. Vous pouvez l'utiliser comme ça après:
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
}
Il peut être converti de JArray à List sous la forme array.ToObject<List<TargetDataType>>();
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" });
}