Estoy usando jQuery para hacer una llamada Ajax usando una publicación Http en ASP.NET MVC. Me gustaría poder aprobar un Diccionario de valores.¿Cómo paso un diccionario como parámetro a un método ActionResult de jQuery/Ajax?
Lo más parecido que podía pensar era pasar una matriz multidimensional de cadenas, pero el resultado que realmente pasa al método ActionResult es una matriz de cadenas dimensionales única que contiene una concatenación de cadenas de la "clave/valor" " par.
Por ejemplo, el primer elemento en el siguiente array "valores" contiene el valor a continuación:
"id,200"
He aquí un ejemplo de mi método ActionResult:
public ActionResult AddItems(string[] values)
{
// do something
}
Aquí hay un ejemplo de cómo' m llamando al método desde jQuery:
$.post("/Controller/AddItems",
{
values: [
["id", "200"],
["FirstName", "Chris"],
["DynamicItem1", "Some Value"],
["DynamicItem2", "Some Other Value"]
]
},
function(data) { },
"json");
¿Alguien sabe cómo pasar un diccionario o ¿Qué ocurre con jQuery al método ActionResult en lugar de una matriz?
Realmente me gustaría definir mi ActionResult así:
public ActionResult AddItems(Dictionary<string, object> values)
{
// do something
}
¿Alguna sugerencia?
ACTUALIZACIÓN: Intenté pasar una coma dentro del valor y básicamente hace que sea imposible analizar realmente el par de clave/valor mediante el análisis de cadenas.
Pass esto:
values: [
["id", "200,300"],
["FirstName", "Chris"]
]
resultados en esta:
values[0] = "id,200,300";
values[1] = "FirstName,Chris";
No creo que hay una manera de hacerlo that.I puede estar equivocado, pero va a ser trivial para analizar los datos que se pasan en una string array, y crea el diccionario tú mismo dentro del método AddItems. –
No estoy seguro de qué problemas de análisis causarían las comas dentro de los valores. –
Por fin me di cuenta, gracias a todos los que hicieron sugerencias! Agregué mi solución final como respuesta a continuación. Lo marcaré como la Respuesta correcta tan pronto como SO me lo permita. ¡Gracias a todos! –