Javascript: iterieren durch die Liste der Objekte im Modell
so, ich brauche, um zu Holen die Namen der Schüler in eine Liste von student-Objekt ist in einer view das Modell dann senden Sie Sie an den server via $.post, die letztere ich habe es herausgefunden aber ich kann nicht herausfinden, wie eine Iteration durch die Liste der Objekte. Im Grunde genommen habe ich dieses:
//Student object
public class Student
{
public string FirstName { get; set; }
public string LastName { get; set; }
//Like a bunch of other attributes here
}
Dies ist das Modell in der Ansicht:
//StudentSearchResult ViewModel
public class StudentSearchResult {
public IEnumerable<Student> { get; set;}
}
Zuerst habe ich aber nur das senden und die studentische Liste-Objekt, wie es ist, aber es kann nicht eine gute Idee, da es gebündelt mit zu vielen Parametern (es hat mir dieses "zirkuläre" Fehler, wenn ich versuchte, senden Sie das Modell) und ich nur wirklich brauchen, um zu senden der verketteten FirstName und LastName in den controller mithilfe des $.post-Methode, die ich schon habe. Ich habe versucht, Dinge wie diese:
var names = []
var length = "@Model.StudentSearchResult.count()";
for (int i = 0; i < length; i++)
{
names[] = "@Model.StudentSearchResult[i].Name + @Model.StudentSearchResult[i].LastName"
}
//$.post function here that calls the controller and send the concatenated names of each student in studentsearchresult.
Aber ich bekommen eine Fehlermeldung, dass "ich" nicht existiert, wie kann ich die Iteration in javascript durch die Liste der Objekte in meiner view-Modell den Zugriff auf die Attribute und verketten und dann speichern Sie Sie auf ein array von strings, so dass ich senden Sie es an den controller? Ich Stelle mir den controller würde dann so Aussehen
[HttpPost]
public ActionResult StudentSearchResult(/*other stuff I send here, */ string[] studentNames){
//stuff here
return View();
}
Dank!
- Sicherlich
var length = "@Model.StudentSearchResult.count()";
Ergebnisse in so etwas wievar length = "5";
gehen, um den client? Und so ein string? Ja, JavaScript ist Locker typisiert und so wird es meistens funktionieren, aber... - Das ist der einfache Teil, was ich nicht kann, ist der Zugriff der Mitglieder der Liste der Objekte in der Ansicht Modell und legen Sie Sie auf ein array
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie einige ungültige javascript drüben.
Ersten start durch die Festsetzung Ihrer Blick-Modell, so dass Sie ein kompilieren von C# - code (Sie fehlten, eine Eigenschaft name):
Dann, wenn der controller-Aktionen schickt ein JSON-Ergebnis an den client (das stellt sicher, dass die view-Modell ist richtig JSON codiert und dass die
application/json
response-content-type-header gesendet wird):könnte man leicht zu Durchlaufen, die auf dem client mithilfe der
$.each()
Funktion:oder sogar ein plain ol'
for
Schleife, wenn Sie bevorzugen:UPDATE:
Sieht es aus wie ich habe ich einen Fehler gemacht, indem Sie glauben, dass Sie ausgeführt wurden, ein AJAX-request. Stattdessen, was Sie brauchen, ist Zugriff auf die Modell-Eigenschaften in javascript. Hier ist, wie dies getan werden könnte:
statt
funktionieren sollte.
können Sie $.jedes jquery-Iteration das Ergebnis.
und für den Fehler. Sie machte Fehler bei der Deklaration der schleifenvariablen
Sieht aus wie das, was Sie brauchen, ist, um die Ausgabe der Benutzernamen auf dem client als JSON? Versuchen Sie dies:
Ich bin nicht sehr vertraut mit der Razor-syntax kann man aber denke ich noch verstehen, der code oben.