Sto utilizzando jQuery per effettuare una chiamata Ajax utilizzando un post Http in ASP.NET MVC. Mi piacerebbe essere in grado di passare un dizionario di valori.Come posso passare un dizionario come parametro ad un metodo ActionResult da jQuery/Ajax?
La cosa più vicina a cui potevo pensare era passare una matrice multidimensionale di stringhe, ma il risultato che viene effettivamente passato al metodo ActionResult è un array di stringhe monodimensionali contenente una stringa di concatenazione della "chiave/valore" " paio.
Per esempio il primo elemento dell'array sotto "valori" contiene il valore al di sotto:
"id,200"
Ecco un esempio del mio metodo ActionResult:
public ActionResult AddItems(string[] values)
{
// do something
}
Ecco un esempio di come I' m chiamando il metodo da jQuery:
$.post("/Controller/AddItems",
{
values: [
["id", "200"],
["FirstName", "Chris"],
["DynamicItem1", "Some Value"],
["DynamicItem2", "Some Other Value"]
]
},
function(data) { },
"json");
Qualcuno sa come passare un dizionario o bject da jQuery al metodo ActionResult invece di una matrice?
Mi piacerebbe davvero definire il mio ActionResult in questo modo:
public ActionResult AddItems(Dictionary<string, object> values)
{
// do something
}
Qualche suggerimento?
UPDATE: Ho tentato di inserire una virgola all'interno del valore e fondamentalmente rende impossibile analizzare effettivamente la coppia chiave/valore utilizzando l'analisi delle stringhe.
passare questo:
values: [
["id", "200,300"],
["FirstName", "Chris"]
]
risultati in questo:
values[0] = "id,200,300";
values[1] = "FirstName,Chris";
Non credo ci sia un modo per fare that.I può essere sbagliato, ma sarà banale per analizzare i dati passati in un array di stringhe e creare autonomamente il dizionario all'interno del metodo AddItems. –
Non sono sicuro quali problemi di analisi siano causati da virgole nei valori. –
Finalmente l'ho capito, grazie a tutti quelli che hanno fatto dei suggerimenti! Ho aggiunto la mia soluzione finale come risposta qui sotto. La contrassegnerò come risposta corretta non appena me lo consentirà. Grazie a tutti! –