none
Limpiar vista en asp.net MVC RRS feed

  • Pregunta

  • Hola buenos días! y feliz Domingo de resurrección para todas y todos, estoy aprendion ASP.NET MVC he realizado diferentes aplicaciones que he visto en paginas de Youtube, recientemente termine uno, pero a pesar de que realiza casi todo bien, quedo con un detalle que no logre solventar por ahora, cuando le doy al boton de Create(que guarda el maestro y el detalle) el proceso de almacenado en las diferentes tablas se realiza exitosamente, pero la pagina no se refresca, osea la pantalla no queda limpia, la grilla de abajo donde estan los detalles no se limpia y los controles de arriba queda con la información: les coloco el el codigo del controlado el Post:

     [HttpPost]
            public ActionResult NewOrder(OrderView orderview)
            {
                orderview = Session["OrderView"] as OrderView;
                int idcustomer = int.Parse(Request["Customerid"]);
                DateTime dateorder = Convert.ToDateTime(Request["Customer.Orderdate"]);
                Orders neworder = new Orders
                    {
                    Customerid=idcustomer,
                    Orderdate=dateorder
                    };
                db.Orders.Add(neworder);
                db.SaveChanges();

                int lastordeid = db.Orders.ToList().Select(o => o.Orderid).Max();
                foreach (ProductOrder item in orderview.Products)
                {
                    var detail = new Orderdetail()
                    {
                        orderid=lastordeid,
                        productid=item.Productid,
                        quantity=item.quantity,
                        unitprice=item.unitprice
                    };
                    db.Orderdetails.Add(detail);
                }
                db.SaveChanges();
                orderview = Session["OrderView"] as OrderView;
                var list = db.Customers.ToList();
                ViewBag.Customerid = new SelectList(list, "Customerid", "CompanyName");
                return View(orderview);
            }

      espero me puedan ayudar, gracias!

    pd: les publico los video de youtube del ejercicio que realice

    https://www.youtube.com/watch?v=rawVsx4dbgU

    https://www.youtube.com/watch?v=D-LLUJ17iRw&t=1955s

    domingo, 21 de abril de 2019 13:08

Todas las respuestas

  • Cuando termina de ejecutarse el método de acción, lo último que hace es return View(orderview). Esto lo que hace es dibujar la vista y mandarle que presente los datos que hay en orderview. Si quieres que la vista se visualice total o parcialmente vacía, tienes que vaciar los correspondientes campos de la variable orderview.

    Podrías vaciar los campos uno por uno, pero si directamente los quieres todos vacíos, entonces no te molestes en recuperarlos desde el Session (dos líneas más arriba). Simplemente construye un new OrderView() y déjalo vacío.

    Lo más habitual es que después de grabar no muestres la misma vista (a no ser que quieras seguir grabando más registros), sino que después de grabar rebotas a otra vista distinta tal como el Index si es que lo tienes. Si quieres hacer esto, cambia al return View(orderview) por return View("Index"). Poniendo como es lógico el nombre que realmente tenga tu vista en lugar de "Index".

    domingo, 21 de abril de 2019 15:42