none
Enviar a Vista desde controlador que devuelve una vista parcial RRS feed

  • Pregunta

  • Buenos días.

    Estoy desarrollando una aplicación en C#, con ASP.NET MVC.

    Tengo un controlador que devuelve una vista parcial, sin embargo hay un momento que quiero mostrar un mensaje en otra página que no es vista parcial, sin embargo, esa página me la muestra como una vista parcial y no es lo que deseo, este es mi código:

    [HttpGet]
    public ActionResult Crear(int id)
    {
    	Licencia.Estado = licenciaLogica.ValidarExistencia(id);
    
    	string mensaje = Licencia.MensajeDeEstado();
    
    	if (!string.IsNullOrEmpty(mensaje))
    		return RedirectToAction(this.Url.Action("Mostrar", "Error", new { @mensaje = mensaje }, null));
    	else
    	{
    		var idEmpresa = distribucionLogica.ObtenerIdEmpresa(id);
    
    		var licenciaModelo = new LicenciaModelo();
    		licenciaModelo.IdDistribucion = id;
    		licenciaModelo.ListaDepartamento = departamentoLogica.ObtenerTodos(idEmpresa);
    
    		return PartialView("Crear", licenciaModelo);
    	}
    }

    La página mostrar me la muestra como una página parcial, qué procede en estos casos?

    Saludos,


    Carlos Márquez
    San Pedro Sula
    Honduras

    jueves, 3 de mayo de 2018 14:28

Todas las respuestas

  • hola

    >>sin embargo, esa página me la muestra como una vista parcial y no es lo que deseo

    pero ese action devuelve un partial, si necesitas retornar algo diferentes deberias crear otro action

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 3 de mayo de 2018 18:44
  • Hola, Tuttini.

    Lo resolví de otra forma, el problema es que la partial view la mando a mostrar desde una llamada AJAX y claro, la otra view que quiero mostrar me la seguía mostrando como una partial y no como una vista normal (que uso siempre para mostrar errores), entonces hice en mi controlador:

    [HttpGet]
    public ActionResult Crear(int id)
    {
    	Licencia.Estado = licenciaLogica.ValidarExistencia(id);
    
    	string mensaje = Licencia.MensajeDeEstado();
    
    	if (!string.IsNullOrEmpty(mensaje))
    	{
    		var url = this.Url.Action("Mostrar", "Error", new { @mensaje = mensaje });
    
    		return Json(new { estatus = "error", redirectUrl = url }, JsonRequestBehavior.AllowGet);
    	}
    
    	var idEmpresa = distribucionLogica.ObtenerIdEmpresa(id);
    
    	var licenciaModelo = new LicenciaModelo();
    	licenciaModelo.IdDistribucion = id;
    	licenciaModelo.ListaDepartamento = departamentoLogica.ObtenerTodos(idEmpresa);
    
    	return PartialView("Crear", licenciaModelo);
    
    }

    Y en la llamada AJAX:

    success: function (data) {
                    debugger;
                    if (data.estatus == "error") {
                        window.location.href = data.redirectUrl;
                    } else {
    
                        $('#ContenidoModal').html(data);
                        $('#VistaModal').modal(options);
                        $('#VistaModal').modal('show');
                    }
                }

    De esa forma, al mostrar un mensaje de error, voy a otra página y ya no lo muestro en la partial view.

    Saludos,

     


    Carlos Márquez
    San Pedro Sula
    Honduras

    jueves, 3 de mayo de 2018 22:22