Używam jQuery do wykonania połączenia Ajax za pomocą postu HTTP w ASP.NET MVC. Chciałbym móc przekazać Słownik wartości.Jak przekazać słownik jako parametr do metody ActionResult z jQuery/Ajax?
Najbliższą rzeczą, o której mogłem pomyśleć, to przekazanie wielowymiarowej tablicy łańcuchów, ale wynikiem, który faktycznie przechodzi do metody ActionResult, jest jednowymiarowa tablica ciągów znaków zawierająca połączenie ciągów "klucz/wartość" "para.
Na przykład pierwsza pozycja w poniższej „wartości” tablicy zawiera wartość poniżej:
"id,200"
Oto przykład z mojej metody ActionResult:
public ActionResult AddItems(string[] values)
{
// do something
}
Oto przykład tego, jak ja” m wywołanie metody z jQuery:
$.post("/Controller/AddItems",
{
values: [
["id", "200"],
["FirstName", "Chris"],
["DynamicItem1", "Some Value"],
["DynamicItem2", "Some Other Value"]
]
},
function(data) { },
"json");
Czy ktoś wie, jak przekazać słownik o bject z jQuery do metody ActionResult zamiast Array?
naprawdę chciałbym zdefiniować moją ActionResult tak:
public ActionResult AddItems(Dictionary<string, object> values)
{
// do something
}
sugestie?
UPDATE: Próbowałem przechodzącą w ciągu przecinkami wartości i to w zasadzie tylko uniemożliwia właściwie przeanalizować parę klucz/wartość przy użyciu ciąg parsowania.
przekazać to:
values: [
["id", "200,300"],
["FirstName", "Chris"]
]
skutkuje to:
values[0] = "id,200,300";
values[1] = "FirstName,Chris";
Nie sądzę, istnieje sposób, aby zrobić that.I może być źle, ale będzie to trywialne do analizowania danych przekazywanych w postaci ciąg tablic i sam stwórz słownik wewnątrz metody AddItems. –
Nie jesteś pewien, jakie problemy z analizą składni będą powodowane przez przecinki w ramach wartości. –
W końcu to wymyśliłem, dzięki wszystkim, którzy zgłosili sugestie! Dodałem ostateczne rozwiązanie jako odpowiedź poniżej. Zaznaczę to jako poprawną odpowiedź, jak tylko SO mi pozwoli. Dziękuję wszystkim! –