Ich versuche, ein JavaScript-Array mit einem Array aus meinem Modell zu laden. Es scheint mir, dass dies möglich sein sollte.
Keine der folgenden Möglichkeiten funktioniert.
Es kann keine JavaScript-Schleife erstellt und mit der JavaScript-Variablen über das Modellarray inkrementiert werden
for(var j=0; j<255; j++)
{
jsArray = (@(Model.data[j])));
}
Es kann keine Razor-Schleife erstellt werden. JavaScript ist außerhalb des Gültigkeitsbereichs
@foreach(var d in Model.data)
{
jsArray = d;
}
Ich kann es zum Laufen bringen
var jsdata = @Html.Raw(Json.Encode(Model.data));
Aber ich weiß nicht, warum ich JSON verwenden muss.
Auch während ich im Moment dies auf 255 Bytes beschränke. In Zukunft könnte es in viele MB laufen.
javascript
arrays
asp.net-mvc
asp.net-mvc-4
razor
Tom Martin
quelle
quelle
Antworten:
Dies ist möglich, Sie müssen nur die Rasierersammlung durchlaufen
Hoffe das hilft
quelle
@d
wird innerhalb der foreach-Schleife deklariert. Beachten Sie, dass das d den Begriff VAR vor sich hat.Die JSON-Syntax ist so ziemlich die JavaScript-Syntax zum Codieren Ihres Objekts . In Bezug auf Prägnanz und Geschwindigkeit ist daher Ihre eigene Antwort die beste Wahl.
Ich verwende diesen Ansatz beim Auffüllen von Dropdown-Listen in meinem KnockoutJS-Modell . Z.B
...
Beachten Sie, dass ich das Json.NET NuGet-Paket für die Serialisierung und das ViewBag zum Übergeben von Daten verwende.
quelle
Ich arbeitete mit einer Liste von Toasts (Warnmeldungen)
List<Alert>
aus C # und benötigte sie als JavaScript-Array für Toastr in einer Teilansicht (.cshtml
Datei). Der folgende JavaScript-Code hat bei mir funktioniert:quelle
Ich habe einen Schieberegler integriert und musste alle Dateien in den Ordner holen und hatte die gleiche Situation von C # -Array zu Javascript-Array. Diese Lösung von @heymega funktionierte perfekt, außer dass mein Javascript-Parser bei der
var
Verwendung in derforeach
Schleife verärgert war . Also habe ich ein wenig daran gearbeitet, die Schleife zu umgehen.Und der Javascript-Code ist
Ich hoffe es hilft
quelle
So erweitern Sie die am häufigsten gewählte Antwort als Referenz, wenn Sie dem Array komplexere Elemente hinzufügen möchten:
@:myArray.push(ClassMember1: "@d.ClassMember1", ClassMember2: "@d.ClassMember2");
etc.
Wenn Sie das Array als Parameter an Ihren Controller übergeben möchten, können Sie es zunächst als Zeichenfolge festlegen:
myArray = JSON.stringify({ 'myArray': myArray });
quelle
@:myArray.push(ClassMember1: "@d.ClassMember1", ClassMember2: "@d.ClassMember2");
Dies wäre ein besserer Ansatz, als ich implementiert habe :)
Ich hoffe, dies hilft Ihnen dabei, das Modell nicht zu iterieren (Happy Coding).
quelle
Wenn es sich um ein symmetrisches (rechteckiges) Array handelt, versuchen Sie, es in ein eindimensionales Javascript-Array zu verschieben. Verwenden Sie Rasiermesser, um die Array-Struktur zu bestimmen. und dann in ein zweidimensionales Array verwandeln.
quelle