1

Hola tengo el siguiente código y cuando lo ejecuto me aparece el error que la variable facturaedit.Detallefacturas[i].IDDetalleFactura es Null.

código:

    public ActionResult Edit(int id)
    {   //Instanciamos el modelo (los modelos siempre estan vacios, simplemente el formato)         
        FacturaViewModels facturaedit = new FacturaViewModels();
        //Le decimos que la factura selecionada es la que es = al id
        facturaedit.Facturas = db.Facturas.FirstOrDefault(fac => fac.IDFactura == id);
        //No podemos convertir una lista de la bd en una lista del modelo de una entonces creamos una
        //variable que contenga esos registros de detalle de la factura
        var detalle = db.DetalleFacturas.Where(d => d.IDFactura == id).ToList();
        //Validar ID y existencia de Factura   sino redirigir al index         
        if (string.IsNullOrEmpty(Convert.ToString(id)) | facturaedit == null)
        {
            return RedirectToAction("Index");
        }
        //por cada detalle que este en la bd se le asigna al modelo un registro                      
        for (int i = 0; i < detalle.Count; i++)
        {
            facturaedit.Detallefacturas[i].IDDetalleFactura = detalle[i].IDDetalleFactura;
        }
        //al final le cargamos las listas que necesitamso para el editar la factura
        facturaedit.ListaEntidades = db.Entidades.ToList();
        facturaedit.ListaEstado = db.Estados.ToList();
        facturaedit.ListaFormasPago = db.FormasPagos.ToList();
        facturaedit.ListaNumeraciones = db.Numeraciones.ToList();
        facturaedit.ListaProductos = db.Productos.ToList();
        facturaedit.ListaIva = db.Iva.ToList();

        return View(facturaedit);
    }
Blasito
  • 1,378
  • 1
  • 11
  • 30
Jhon Castrillon
  • 89
  • 1
  • 12
  • 1
    Revisa el tamaño de tus listas, puede ser que tengas más elementos en tu lista de detalles que en tu lista de facturaedit – farsSharp Jun 20 '17 at 18:13

3 Answers3

3

El problema ocurre en esta linea

facturaedit.Detallefacturas[i].IDDetalleFactura = detalle[i].IDDetalleFactura;

el problema es que

facturaedit.Detallefacturas[i] tiene un valor null

Al crear la instancia de FacturaViewModels, asegura que cree el arreglo de objetos Detallefacturas

 FacturaViewModels facturaedit = new FacturaViewModels();
Jorgesys
  • 103,630
  • 13
  • 52
  • 124
0

Inicializa el objeto antes

facturaedit.Detallefacturas[i].IDDetalleFactura = new...

o haz una copia del objecto en lugar de una asignación

MainMind
  • 81
  • 8
0

Me faltaba colocarle al final que es un array

facturaedit.Detallefacturas = db.DetalleFacturas.Where(item => item.IDFactura == id).ToArray();

Gracias !

Jorgesys
  • 103,630
  • 13
  • 52
  • 124
Jhon Castrillon
  • 89
  • 1
  • 12