TransWikia.com

Problema de validación, índice fuera de rango

Stack Overflow en español Asked on December 18, 2021

Estoy con mvc c# tratando de validar. El problema está en que si ingreso un número que no exista en la bd me sale el error de que está fuera del índice de intervalo. Así lo estoy validando:

if (persona[0]?.titulo == null || persona[0].titulo == 0
                    || persona330[0]?.titulo == null || persona330[0].titulo == 0
                    || persona.Count <=0)//aquí es donde sale el error de índice
                {
                    ViewBag.Alert = "Lo sentimos, el título ingresado no existe.";
                    return View("Index");
                }

Resto del código:

public ActionResult Pdf(double? titulo)
        {
            try
            {
                ConexionSql sql = new ConexionSql();
                ConexionSQL330 sql330 = new ConexionSQL330();

                var persona = sql.cargarDatosPDF(titulo);
                var persona330 = sql330.cargarDatosPDF(titulo);

                //inline para verlo online, attachment para descarga directa

                if (titulo > persona[0]?.titulo || persona[0]?.titulo == null || persona[0].titulo == 0
                    || titulo > persona[0]?.titulo || persona330[0]?.titulo == null || persona330[0].titulo == 0
                    || persona.Count <=0)
                {
                    ViewBag.Alert = "Lo sentimos, el título ingresado no existe.";
                    return View("Index");
                }

                Response.AppendHeader("Content-Disposition", "inline; filename="" + titulo + "-" + persona[0].cantCuotas + ".pdf"");

            //resto código
            }
            catch (SqlException ex)
            {
                return Content("Error: " + ex.Message);
            }
        }

¿Alguna idea de por qué no funciona? -o, ¿A dónde le estoy errando?

One Answer

La construcción de tu condición asume que persona tiene al menos un elemento y el mensaje de error te indica que está vacío.

Mi sugerencia es validarlo de la siguiente manera:

if( persona == null || persona.count == 0 )
{
   // coloca aquí las instrucciones de lo que ocurre cuando persona es nulo o vacío
}
else
{
    if (titulo > persona[0]?.titulo || persona[0]?.titulo == null || persona[0].titulo == 0
                    || titulo > persona[0]?.titulo || persona330[0]?.titulo == null 
                    || persona330[0].titulo == 0)
                {
                    ViewBag.Alert = "Lo sentimos, el título ingresado no existe.";
                    return View("Index");
                }
}

Answered by Pablo Gutiérrez on December 18, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP