Estoy tratando de cargar una matriz de JavaScript con una matriz de mi modelo. Me parece que esto debería ser posible.
Ninguna de las siguientes formas funciona.
No se puede crear un bucle JavaScript e incrementarlo a través de Model Array con variable JavaScript
for(var j=0; j<255; j++)
{
jsArray = (@(Model.data[j])));
}
No se puede crear un bucle de Razor, JavaScript está fuera de alcance
@foreach(var d in Model.data)
{
jsArray = d;
}
Puedo hacer que funcione con
var jsdata = @Html.Raw(Json.Encode(Model.data));
Pero no sé por qué debería tener que usar JSON.
Además, mientras que en este momento estoy restringiendo esto a 255 bytes. En el futuro, podría ocupar muchos MB.
javascript
arrays
asp.net-mvc
asp.net-mvc-4
razor
Tom Martin
fuente
fuente
Respuestas:
Esto es posible, solo necesita recorrer la colección de afeitadoras
Espero que esto ayude
fuente
@d
se declara dentro del bucle foreach. Observe que la d tiene el término VAR al frente. Eso permite que se use dentro del bucle foreachLa sintaxis JSON es prácticamente la sintaxis de JavaScript para codificar su objeto . Por lo tanto, en términos de concisión y rapidez, su propia respuesta es la mejor opción.
Utilizo este enfoque al completar listas desplegables en mi modelo KnockoutJS . P.ej
...
Tenga en cuenta que estoy usando el paquete Json.NET NuGet para la serialización y ViewBag para pasar datos.
fuente
Estaba trabajando con una lista de brindis (mensajes de alerta),
List<Alert>
de C # y la necesitaba como matriz de JavaScript para Toastr en una vista parcial (.cshtml
archivo). El código JavaScript a continuación es lo que funcionó para mí:fuente
Estaba integrando un control deslizante y necesitaba obtener todos los archivos en la carpeta y estaba teniendo la misma situación de la matriz C # a la matriz javascript. Esta solución de @heymega funcionó perfectamente, excepto que mi analizador de JavaScript estaba molesto por el
var
uso enforeach
bucle. Así que hice un pequeño trabajo para evitar el bucle.Y el código javascript es
Espero eso ayude
fuente
Para expandir la respuesta más votada, como referencia, si desea agregar elementos más complejos a la matriz:
@:myArray.push(ClassMember1: "@d.ClassMember1", ClassMember2: "@d.ClassMember2");
etc.
Además, si desea pasar la matriz como un parámetro a su controlador, puede secuenciarlo primero:
myArray = JSON.stringify({ 'myArray': myArray });
fuente
@:myArray.push(ClassMember1: "@d.ClassMember1", ClassMember2: "@d.ClassMember2");
Este sería un mejor enfoque que he implementado :)
Espero que esto te ayude a evitar que iteres el modelo (codificación feliz)
fuente
Si es una matriz simétrica (rectangular), intente insertar una matriz javascript de una sola dimensión; use una navaja para determinar la estructura de la matriz; y luego transformar en una matriz bidimensional.
fuente