Saya mencoba memuat array JavaScript dengan array dari model saya. Menurut saya hal ini harus dimungkinkan.
Tak satu pun dari cara di bawah ini berhasil.
Tidak dapat membuat loop JavaScript dan kenaikan melalui Model Array dengan variabel JavaScript
for(var j=0; j<255; j++)
{
jsArray = (@(Model.data[j])));
}
Tidak dapat membuat lingkaran Razor, JavaScript berada di luar cakupan
@foreach(var d in Model.data)
{
jsArray = d;
}
Saya bisa membuatnya bekerja
var jsdata = @Html.Raw(Json.Encode(Model.data));
Tetapi saya tidak tahu mengapa saya harus menggunakan JSON.
Juga sementara saat ini saya membatasi ini menjadi 255 byte. Di masa mendatang bisa mencapai banyak MB.
javascript
arrays
asp.net-mvc
asp.net-mvc-4
razor
Tom Martin
sumber
sumber
Jawaban:
Ini dimungkinkan, Anda hanya perlu memutar melalui koleksi pisau cukur
Semoga ini membantu
sumber
@d
dideklarasikan di dalam loop foreach. Perhatikan bahwa d memiliki istilah VAR di depan. Itu memungkinkannya untuk digunakan di dalam foreach loopSintaks JSON adalah sintaks JavaScript untuk mengkodekan objek Anda . Karena itu, dalam hal keringkasan dan kecepatan, jawaban Anda sendiri adalah yang terbaik.
Saya menggunakan pendekatan ini saat mengisi daftar dropdown dalam model KnockoutJS saya . Misalnya
...
Perhatikan bahwa saya menggunakan paket NuGet Json.NET untuk serialisasi dan ViewBag untuk meneruskan data.
sumber
Saya sedang mengerjakan daftar toast (pesan peringatan),
List<Alert>
dari C # dan membutuhkannya sebagai array JavaScript untuk Toastr dalam tampilan parsial (.cshtml
file). Kode JavaScript di bawah ini yang berhasil untuk saya:sumber
Saya mengintegrasikan slider dan perlu mendapatkan semua file di folder dan memiliki situasi yang sama dari array C # ke array javascript. Solusi oleh @heymega ini bekerja dengan sempurna kecuali parser javascript saya terganggu saat
var
digunakan dalamforeach
lingkaran. Jadi saya melakukan sedikit pekerjaan untuk menghindari loop.Dan kode javascriptnya adalah
Semoga membantu
sumber
Untuk memperluas jawaban pilihan teratas, sebagai referensi, jika Anda ingin menambahkan item yang lebih kompleks ke array:
@:myArray.push(ClassMember1: "@d.ClassMember1", ClassMember2: "@d.ClassMember2");
dll.
Selain itu, jika Anda ingin meneruskan array sebagai parameter ke pengontrol, Anda dapat merangkainya terlebih dahulu:
myArray = JSON.stringify({ 'myArray': myArray });
sumber
@:myArray.push(ClassMember1: "@d.ClassMember1", ClassMember2: "@d.ClassMember2");
Ini akan menjadi pendekatan yang lebih baik karena saya telah menerapkan :)
Semoga ini akan membantu Anda mencegah Anda dari iterasi model (selamat coding)
sumber
Jika itu adalah larik simetris (persegi panjang) maka Coba dorong ke dalam larik javascript berdimensi tunggal; gunakan pisau cukur untuk menentukan struktur larik; dan kemudian berubah menjadi array 2 dimensi.
sumber