none
¿ Como cargar información de un procedimiento almacenado SQL SERVER con parametros en ASP.NET MVC ? RRS feed

  • Pregunta

  • Buen día,

    Tengo la siguiente clase en un desarrollo ASP.NET MVC, con el cual quiero cargar la información del procedimiento almacenado de mi base de datos a la vista.

    sin embargo el procedimiento almacenado tiene un parámetro @idUsrio, para cual tengo las siguientes dudas:

    1. En que parte de la clase solicito el parámetro y como se hace ?

    2. El nombre del usuario lo guardo desde el logueo en una variable de session, como le asigno el valor de esa variable al parámetro?

    Agradezco su colaboración, a continuación la clase en mención:

    public IEnumerable<casosSupervisoresSede> casosSupervisoresSedes
            {
                get
                {
                    string connectionString = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
    
                    List<casosSupervisoresSede> casosSupervisoresSedes = new List<casosSupervisoresSede>();
    
                    using (SqlConnection con = new SqlConnection(connectionString))
                    {
                        SqlCommand cmd = new SqlCommand("rprteSupervisoresSdes", con);
                        cmd.CommandType = CommandType.StoredProcedure;
    
    
    
                        con.Open();
                        SqlDataReader rdr = cmd.ExecuteReader();
                        while (rdr.Read())
                        {
                            casosSupervisoresSede css = new casosSupervisoresSede();
    
                            css.idCso = Convert.ToInt32(rdr["idCso"]);
                            css.nmbreSde = rdr["nmbreSde"].ToString();
                            css.idLcal = rdr["idLcal"].ToString();
                            css.nmbreEstdo = rdr["nmbreEstdo"].ToString();
                            css.cdgoPrsnal = rdr["cdgoPrsnal"].ToString();
                            css.nmbrePrsnal = rdr["nmbrePrsnal"].ToString();
                            css.mdlo = rdr["mdlo"].ToString();
                            css.idMqna = rdr["idMqna"].ToString();
                            css.tpoCso = rdr["tpoCso"].ToString();
                            css.fchaCrcion = rdr["fchaCrcion"].ToString();
                            css.nroDias = Convert.ToInt32(rdr["nroDias"]);
                            css.cdgoSAP = Convert.ToInt32(rdr["cdgoSAP"]);
                            css.obsrvcionPrte = rdr["obsrvcionPrte"].ToString();
                            css.nmbrePrte = rdr["nmbreprte"].ToString();
                            css.fchaSlctud = rdr["fchaSlctud"].ToString();
                            css.fchaDspcho = rdr["fchaDspcho"].ToString();
                            css.nroTag = rdr["nroTag"].ToString();
                            css.nroGuiaDspcho = rdr["nroGuiaDspcho"].ToString();
                            css.estdoPrte = rdr["estdoPrte"].ToString();
                            css.nmbreMdlo = rdr["nmbreMdlo"].ToString();
                            css.mble = rdr["mble"].ToString();
                            css.srie = Convert.ToInt32(rdr["srie"]);
                            css.mj = rdr["mj"].ToString();
                            css.fchaRcbdo = rdr["fchaRcbdo"].ToString();
    
                            casosSupervisoresSedes.Add(css);
                        }
                    }
                    return casosSupervisoresSedes;
                }
            }

    lunes, 13 de junio de 2016 22:01

Respuestas

  • pero tienes que invocarlo como metodo

    public ActionResult CasosSupervisoresSedes() {

    int idusuario = Convert.ToInt32(Session["idusuario"]); BusinessLayer businessLayer = new BusinessLayer(); List<casosSupervisoresSede> csosSupervisoresSedes = businessLayer.casosSupervisoresSedes(idusuario).ToList(); return View(csosSupervisoresSedes); }

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 14 de junio de 2016 16:40

Todas las respuestas

  • Esimado:

    Colocas el retorno en un ViewData dentro del PageController, luego en la Vista HTML iteras este viewdata.

    Para mayor informacion valida el siguiente link.

    Saludos.


    Camilo Villa

    lunes, 13 de junio de 2016 23:56
  • hola

    porque defines una propiedad ? tiene que ser un metodo

    public IEnumerable<casosSupervisoresSede> casosSupervisoresSedes(int idusuario)
    {
    
    	string connectionString = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
    
    	List<casosSupervisoresSede> casosSupervisoresSedes = new List<casosSupervisoresSede>();
    
    	using (SqlConnection con = new SqlConnection(connectionString))
    	{
    		con.Open();
    		
    		SqlCommand cmd = new SqlCommand("rprteSupervisoresSdes", con);
    		cmd.CommandType = CommandType.StoredProcedure;
    		cmd.Parameters.AddWithValue("@idUsrio", idusuario);
    
    		SqlDataReader rdr = cmd.ExecuteReader();
    		while (rdr.Read())
    		{
    			casosSupervisoresSede css = new casosSupervisoresSede();
    
    			css.idCso = Convert.ToInt32(rdr["idCso"]);
    			css.nmbreSde = rdr["nmbreSde"].ToString();
    			//reto codigo
    
    			casosSupervisoresSedes.Add(css);
    		}
    	}
    	
    	return casosSupervisoresSedes;
    	
    }

    de esta forma puedes pasarle el valor del usuario

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 14 de junio de 2016 11:45
  • Hola Leandro,

    he realizado las modificaciones que propones:

     public IEnumerable<casosSupervisoresSede> casosSupervisoresSedes(string usuario)
            {
    
                string connectionString = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
    
                List<casosSupervisoresSede> casosSupervisoresSedes = new List<casosSupervisoresSede>();
    
                using (SqlConnection con = new SqlConnection(connectionString))
                {
                    con.Open();
    
                    SqlCommand cmd = new SqlCommand("rprteSupervisoresSdes", con);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@idUsrio", usuario);
                                    
                    SqlDataReader rdr = cmd.ExecuteReader();
                    while (rdr.Read())
                    {
                        casosSupervisoresSede css = new casosSupervisoresSede();
    
                        css.idCso = Convert.ToInt32(rdr["idCso"]);
                        css.nmbreSde = rdr["nmbreSde"].ToString();
                        css.idLcal = rdr["idLcal"].ToString();
                        css.nmbreEstdo = rdr["nmbreEstdo"].ToString();
                     // reto cod
    
                        casosSupervisoresSedes.Add(css);
                    }
                }
                return casosSupervisoresSedes;
            }

    y este es el controlador que había estado utilizando para crear las listas en otros ejemplos sin parámetros:

     public ActionResult CasosSupervisoresSedes()
            {
                BusinessLayer businessLayer = new BusinessLayer();
                List<casosSupervisoresSede> csosSupervisoresSedes = businessLayer.casosSupervisoresSedes.ToList();
                return View(csosSupervisoresSedes);
            }

    y presento el siguiente error:

    No entiendo muy bien el error, agradecería tu colaboración al respecto.



    martes, 14 de junio de 2016 12:53
  • Hola

    Y si cambias el IEnumerable<>, por IList<> o List<> creo que te funcionaria.

    Saludos.


    Camilo Villa

    martes, 14 de junio de 2016 16:09
  • pero tienes que invocarlo como metodo

    public ActionResult CasosSupervisoresSedes() {

    int idusuario = Convert.ToInt32(Session["idusuario"]); BusinessLayer businessLayer = new BusinessLayer(); List<casosSupervisoresSede> csosSupervisoresSedes = businessLayer.casosSupervisoresSedes(idusuario).ToList(); return View(csosSupervisoresSedes); }

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 14 de junio de 2016 16:40
  • Leandro,

    Agradezco bastante tu colaboración en verdad fue muy util.

    martes, 14 de junio de 2016 18:10