es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error: La instrucción foreach no puede operar en variables de tipo ” porque ” no contiene una definición pública para ‘GetEnumerator’.

Quiero renderizar datos en la vista desde el modelo que consta de una lista.

Modelo de Transacción:

public class Transacción
{
    public int IdCuenta { get; set; }
    public string NombreCuenta { get; set; }
    public string Tipo { get; set; }
    public DateTime Fecha { get; set; }
    public int Monto { get; set; }
}

TransacciónViewModel:

public class TransacciónViewModel
{
    public List<transacción> Transacciones { get; set; }
}

Controlador:

public IActionResult Index()
{
    using var conexión = new NpgsqlConnection(cadenaDeConexión);
    conexión.Open();

    var consultaSQL = @"SELECT *
                        FROM cuenta AS c
                        INNER JOIN transacción AS t
                        ON c.id_cuenta = t.id_cuenta";

    using var comandoSQL = new NpgsqlCommand(consultaSQL, conexión);
    NpgsqlDataReader lector = comandoSQL.ExecuteReader();
    List<transacción> listaDeTransacciones = new List<transacción>();

    if (lector.HasRows)
    {
        while (lector.Read())
        {
            listaDeTransacciones.Add(new Transacción
            {
                IdCuenta = Convert.ToInt32(lector["id_cuenta"]),
                NombreCuenta = Convert.ToString(lector["nombre_cuenta"]),
                Tipo = Convert.ToString(lector["tipo"]),
                Monto = Convert.ToInt32(lector["monto"])
            });
        }
    }

    return View(listaDeTransacciones);
}

Vista:

@using System.Data;
@model MiViewModel;

@foreach(var item in Model.Transacciones)
{
    <tr>
        <td>@item.NombreCuenta</td>
    </tr>
}

En la vista estoy obteniendo un error:

La sentencia foreach no puede operar en variables de tipo… porque… no contiene una definición pública para ‘GetEnumerator’.

¿Por qué no puedo hacer un bucle a través de esto?</transacción></transacción></transacción>

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema está en el tipo de modelo declarado en la vista. Según el código proporcionado, se ha definido TransactionViewModel como el modelo para la vista, pero en el bucle foreach se está utilizando Model en lugar de Model.Transactions.

    Para solucionar el error, actualice la vista de la siguiente manera:

    @using System.Data;
    @model TransactionViewModel;
    
    @foreach(var item in Model.Transactions)
    {
        <tr>
            <td>@item.AccountName</td>
        </tr>
    }
    

    De esta manera, se utiliza la lista de transacciones de TransactionViewModel para recorrer los datos y mostrarlos en la vista.

Comments are closed.