Problema al redireccionar vista desde otro controlador

publicado por: Anonymous

Esta es mi función que envía, he tomado de ejemplos que he visto en este foro

function enviarDatos() {
        var params = {
            valor1 : $("#usuario").val(),
            valor2 : $("#clave").val()
        };

        $.ajax({
            url: this.href,
            type: "post",
            data: params,
            success: function (result) {
                if (result.success) {
                    //Refresh
                    window.location.reload();
                }
            }
        });

    }

Así lo recibo en el controlador
el debug pasa por el RedirectToAction y finaliza el metodo, pero no redirecciona
No he encontrado ayuda con respecto a este tema en el cual no tengo experiencia

public ActionResult Index(string usuario, string pass)
    {
        try
        {                
            usuario = Request.Form.Get("valor1");
            pass = Request.Form.Get("valor2");
            bool valida = true;
           //Usuario usu = new Usuario();
           //valida = usu.ReadAll(usuario, pass); 

            if (valida)
            {
                return RedirectToAction("Inicio", "Inicio");
            }

solución

No se recarga la nueva pagina que estas solicitando por el simple hecho de que no estas haciendo un redireccionamiento.

AJAX sirve para evitar refrescar la pagina y cargar contenido a la pagina actual.

AHora lo que necesitas es hacer un submit del formulario en ASP .NET MVC puedes hacer lo siguiente

Vista index: (tu vista donde tienes el ajax).

<body>
  <!--form action="@Url.Action("Vista","Controlador")" method="post"-->
  <form action="@Url.Action("Index","Home")" method="post">
    <input type="text" name="Usuario" placeholder="Usuario">
    <input type="text" name="Password" placeholder="Contraseña">
    <button type="submit">Entrar</button>
  </form>
</body>
<!-- He quitado el ajax ya que no voy a recargar la vista en esta url -->

Controlador Home

//get
public ActionResult Index()
{
  return View();
}
[HttpPost]//se recibe el post con la informacion del logeo
public ActionResult Index(ModeloLogin model)
{
  //validando la informacion
  if (valida)
  {
    return RedirectToAction("Inicio", "Inicio");
    //si la informacion es valida redireccionamos a la nueva vista
  }
  return View();//volvemos a la vista index
}

ModeloLogin //se requiere para parsear la informacion que ingreso en los input.

public class ModeloLogin
{
  //variables para cargar los datos enviados por el usuario
  public String UserName { get; set; }
  public String Password { get; set; }
}

NOTA:

  1. Para que entiendas un poco mas el concepto de MVC en ASP .NET
    MVC
    revisa
    https://si.ua.es/es/documentacion/asp-net-mvc-3/1-dia/modelo-vista-controlador-mvc.html
  2. O si prefieres algo mas visual el workshop del buen fredyfx https://www.youtube.com/watch?v=6LZG76aLykY
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *