2016-05-03 10 views
2

Ich habe derzeit eine IEnumerable-Ansicht in einem Raster, die ich Kontrollkästchen hinzugefügt habe, damit ich Elemente auswählen (die ich die IDs über JavaScript und bau ein Array von nur die IDs).MVC Call neue Action und View von Javascript und senden Array

Ich habe eine Schaltfläche, die das Array an eine neue Aktion senden und die entsprechende Ansicht laden soll.

Ich versuchte zunächst, das Array über ein JSON-Objekt zu senden, das funktionierte, aber ich konnte den Controller nicht laden, um eine neue Ansicht zu laden, es gibt nur die Ergebnisse an die aktuelle Ansicht zurück (nicht das, was ich will).

So bin ich jetzt versuche nur folgende Möglichkeiten:

window.location.href = '/TeamSelector/TeamList?array=' +SwimmerList; 

Diese Arbeit ist aber das Objekt korrekt als ich empfange nichts in der Anordnung am Controller Ende nicht gesendet werden.

public ActionResult TeamList (List<int> Array) 
    { 
    // Do something here 
    return view(results) 
    } 

Könnte jemand bitte mir raten, wie der JavaScript-Code zu strukturieren das Array zu senden, so dass es von der Steuerung akzeptiert werden.

Jeder Vorschlag/Rat würde sehr geschätzt werden.

Andy.

+1

Es müsste sein '/ TeamSelector/TeamList? Array = 1 & Array = 2 & Array = 3' usw. –

+0

@StephenMuecke vielen Dank für die schnelle Antwort. Ich habe es gerade getestet und es funktionierte zum ersten Mal. Ich werde ein wenig Code schreiben, um das Array zu durchlaufen und den Text zur URL hinzuzufügen (das kann 3 Wochen und 4 weitere SO Fragen erfordern). Stephen könntest du bitte als Antwort posten, damit ich es markieren kann, eine andere Frage, die du für mich gelöst hast und die sehr geschätzt wird. –

+0

Wenn Sie mir 30 Minuten geben, werde ich Ihnen auch zeigen, wie Sie es mit den Werten aus dem Javascript-Array generieren :) –

Antwort

2

Um mit der Unterschrift eine Sammlung von Werten zu einer GET-Methode zu schreiben zurück

public ActionResult TeamList (List<int> Array) 

Ihre URL

/TeamSelector/TeamList?array=1&array=2&array=3 // etc 

Einen Weg sein muss, um dies zu erreichen wäre (übernimmt Ihre Kontrollkästchen class="checkbox")

location.href = '/TeamSelector/TeamList?array=' + $('.checkbox:checked').map(function() { 
    return $(this).val(); 
}).get().join('&array='); 
+0

Leider habe ich den Weg der Verwendung von Grid beibehalten .MVC, die ich mit der Zeit gefunden habe, ist sehr einschränkend und ein ziemlich totes Plugin. Die Checkbox-Funktion ist merkwürdig und zeigt zwei Kontrollkästchen an, und ich kann nicht scheinen, sie zu aktualisieren, also füge ich die Click-Funktion hinzu, um mein Array manuell aufzubauen.Ihre elegante Lösung wäre perfekt mit Grid MVC. –

1

Dank Stephen und seine Antwort, habe ich geschrieben ein grundlegendes Skript, um die URL mit Array-Daten zu erstellen und alles funktioniert jetzt.

 var url = '/TeamSelector/TeamList?'; 
    for (var i = 0; i < SwimmerList.length; i++) 
    { 
     if (i == 0) { 
      url = url + 'array=' + SwimmerList[i]; 
     } else { 
      url = url + '&array=' + SwimmerList[i]; 
     } 
    } 
    window.location.href = url; 

Aufgrund meiner mit Grid.MVC ich mit der Checkbox und bekommen den Status von ihnen gekämpft haben, so landete ich ein auf Klick auf das entsprechende Kästchen Aufsummierung und ich steuern, dass es so meine Array bis zu bauen.