J'essaye de charger un tableau JavaScript avec un tableau de mon modèle. Il me semble que cela devrait être possible.
Aucune des méthodes ci-dessous ne fonctionne.
Impossible de créer une boucle JavaScript et d'incrémenter via Model Array avec une variable JavaScript
for(var j=0; j<255; j++)
{
jsArray = (@(Model.data[j])));
}
Impossible de créer une boucle Razor, JavaScript est hors de portée
@foreach(var d in Model.data)
{
jsArray = d;
}
Je peux le faire fonctionner avec
var jsdata = @Html.Raw(Json.Encode(Model.data));
Mais je ne sais pas pourquoi je devrais utiliser JSON.
Aussi, en ce moment, je limite cela à 255 octets. À l'avenir, il pourrait atteindre de nombreux Mo.
javascript
arrays
asp.net-mvc
asp.net-mvc-4
razor
Tom Martin
la source
la source
Réponses:
C'est possible, il vous suffit de parcourir la collection de rasoirs
J'espère que cela t'aides
la source
@d
est déclaré dans la boucle foreach. Notez que le d a le terme VAR devant. Cela lui permet d'être utilisé dans la boucle foreachLa syntaxe JSON est à peu près la syntaxe JavaScript pour coder votre objet . Par conséquent, en termes de concision et de rapidité, votre propre réponse est le meilleur pari.
J'utilise cette approche lors du remplissage de listes déroulantes dans mon modèle KnockoutJS . Par exemple
...
Notez que j'utilise le package NuGet Json.NET pour la sérialisation et le ViewBag pour transmettre des données.
la source
Je travaillais avec une liste de toasts (messages d'alerte), à
List<Alert>
partir de C # et j'en avais besoin comme tableau JavaScript pour Toastr dans une vue partielle (.cshtml
fichier). Le code JavaScript ci-dessous est ce qui a fonctionné pour moi:la source
J'intégrais un curseur et j'avais besoin d'obtenir tous les fichiers dans le dossier et j'avais la même situation de tableau C # au tableau javascript. Cette solution de @heymega fonctionnait parfaitement sauf que mon analyseur javascript était ennuyé lors de l'
var
utilisation enforeach
boucle. J'ai donc fait un petit travail pour éviter la boucle.Et le code javascript est
J'espère que ça aide
la source
Pour développer la réponse la plus votée, à titre de référence, si vous souhaitez ajouter des éléments plus complexes au tableau:
@:myArray.push(ClassMember1: "@d.ClassMember1", ClassMember2: "@d.ClassMember2");
etc.
De plus, si vous souhaitez passer le tableau en tant que paramètre à votre contrôleur, vous pouvez d'abord le stringifier:
myArray = JSON.stringify({ 'myArray': myArray });
la source
@:myArray.push(ClassMember1: "@d.ClassMember1", ClassMember2: "@d.ClassMember2");
Ce serait une meilleure approche que j'ai mise en œuvre :)
J'espère que cela vous aidera à vous empêcher d'itérer le modèle (bon codage)
la source
S'il s'agit d'un tableau symétrique (rectangulaire), essayez de pousser dans un tableau javascript à une seule dimension; utilisez un rasoir pour déterminer la structure du tableau; puis transformez en un tableau à 2 dimensions.
la source