Quiero llenar una tabla de datos jquery pasándole una matriz, el controlador pasa una matriz de usuarios que usan ViewBag de la siguiente manera:
userInfo[] users = _context.userInfo.ToArray(); ViewBag.UsersArray = users; En la vista, utilicé ViewBag.UsersArray como fuente de datos para la tabla de datos jquery:
<script> $(document).ready(function () { $('#users').DataTable({ data: @ViewBag.UsersArray, columns: [ { data: 'id' }, { data: 'username' }, { data: 'balance' }, { data: 'contract_id' } ] }); }); </script>Para usar objetos de C# en etiquetas de script en páginas de Razor, primero debe convertirlos a JSON. Razor no hace esto automáticamente.
De esta manera, puede serializar fácilmente su matriz en JSON:
<script> $(document).ready(function () { $('#users').DataTable({ data: @Json.Serialize(@ViewBag.UsersArray), columns: [ { data: 'id' }, { data: 'username' }, { data: 'balance' }, { data: 'contract_id' } ] }); }); </script>El problema parece ser que la matriz se trata como una referencia a un objeto en lugar de enumerarla. Primero intentaría envolver @ViewBag.UsersArray entre comillas, y si eso no hace ninguna diferencia, enumeraría "manualmente" a través de la matriz en su código JS y agregaría cada elemento de la matriz a la propiedad de datos de la tabla.