Wie kann ich ein Int-Array von $.ajax an c# mvc senden?
Wie kann ich ein Int-Array von Ajax an c# mvc senden?
Anton Lyhin
Daniel
$.ajax({
url: <Url of the action>,
type: "POST",
data: JSON.stringify([1,2,3]),
dataType: "json",
contentType: 'application/json; charset=utf-8'
});
und in der Aktion.
public ActionResult ReceiveIntArray(int[] ints)
{
...
}
mvc sollte den json automatisch analysieren.
sieh dir diese frage an.
-
Funktioniert nicht von meinem Code … kann den Grund nicht verstehen. Wenn ich den Methodenparameter eingebe, ist er null.
– Anton Lyhin
2. Februar 2012 um 9:29 Uhr
-
Entschuldigung, Sie müssten JSON.stringify ([1,2,3]) Ich habe die Antwort bearbeitet
– Daniel
2. Februar 2012 um 9:44 Uhr
-
@Daniel es funktioniert auch für mich, aber ich habe eine Frage. Warum war es egal, welcher Array-Name lautet (“ints”)? Normalerweise, wenn data: {BasvuruId: BasvuruId}, in js, muss der Variablenname in Aktion gleich sein (BasvuruId).
– MustafaP
9. Januar 2014 um 13:47 Uhr
-
dataType: “json” wird oft übersehen … zumindest von mir.
– DavidCC
10. August 2019 um 19:57 Uhr
VMAtm
Versuchen Sie die Lösung aus dieser Frage:
Stellen Sie die ein
traditional
-Eigenschaft auf true setzen, bevor der Get-Aufruf ausgeführt wird. dh:jQuery.ajaxSettings.traditional = true $.get('/controller/MyAction', { vals: arrayOfValues }, function (data) { ... }
-
Code sendet keine Werte. Verlinkung ist nett.
– Anton Lyhin
2. Februar 2012 um 10:04 Uhr
Die Art und Weise, wie ich es mache, ist mit einem einfachen input:hidden
Element
<input type="hidden" name="elements" value="@String.Join(",", ViewBag.MyArray)" />
Und im JavaScript-Code übergebe ich es als String:
$.ajax({
type: "POST",
url: '/Controller/Method',
data:
{
recipients: $("input[name=elements]").val()
},
traditional: true,
success: updateSelected
});
Und schließlich habe ich gerade Split
die Elemente so:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Method(string elements)
{
IList<long> selected = elements.Split<long>(',');
...
}
Ben Parsons
Der einfachste Weg wäre, eine (möglicherweise durch Kommas) getrennte Zeichenfolgenliste der Ints als Argument für eine GET-Anforderung zu senden und dann zu verwenden Sting.Split()
um sie auf Ihrem C#-MVC-Empfänger zu analysieren.
Also zum Beispiel
$.get("/path-to/receiver/", { myArray: myArray.toString() } );
Verwenden Sie dann auf dem Server
string[] stringArray = Request.QueryString["myArray"].ToString().Split(',')
um die Werte dann in ein String-Array zu extrahieren Int32.TryParse
um endlich ein Array von Ints zu erhalten.
Versuchen Sie diese Lösung:
var Array = [10, 20, 30];
$.ajax({
type: "Post",
datatype: "Json",
url: <Url of the action>,
data: JSON.stringify(Array),
contentType: 'application/json; charset=utf-8',
});
Ich habe 3-4 Beispiele ausprobiert, ich kann es nicht ausführen. Was kann ein Grund sein?
– Anton Lyhin
2. Februar 2012 um 9:28 Uhr
[Ajax] öffentliches boolesches Beispiel (int[] ints)
– Anton Lyhin
2. Februar 2012 um 9:28 Uhr
Bitte geben Sie genauer an, was Sie versucht haben und welches Ergebnis Sie sehen, einschließlich Code.
– Ben Parsons
2. Februar 2012 um 9:47 Uhr
Ich möchte alle Beispiele überprüfen, aber die meisten von ihnen senden null an die c#-Methode.
– Anton Lyhin
2. Februar 2012 um 10:01 Uhr
Ich denke @Darin Dimitrov hat hier die passende Antwort darauf gegeben
– Muhammad Ashikuzzaman
26. Mai 2016 um 10:25 Uhr