2012-01-10 12 views
13

En el AccountController, al final de un método que tiene:RedirectToAction no funciona en absoluto

RedirectToAction("EveryView", "Account"); 

En el mismo archivo controlador Tengo este método:

public ActionResult EveryView() 
    { 
     return View(); 
    } 

Pero este método no consigue llamado. Tengo un punto de interrupción en '{' y nunca se golpea!

+3

Esto puede no ser el problema, pero si está dentro de la misma 'controlador', sólo puede usar' RedirectToAction ("EveryView"); ' – Rondel

+0

@Rondel Lo intenté y no importa. –

+6

¿Acabas de tener 'RedirectToAction()'? O 'devuelve RedirectToAction (...)'. Lo intenté y con el 'retorno' funcionó bien. –

Respuesta

10

Humm ... difícil de ver (o decir) cuál es el problema ya que el código parece bastante trivial.

¡Quizás una pequeña depuración pueda ayudar! Trate de crear un nuevo TestController haber dentro del Índice predeterminado() ActionResult hacer esto:

return RedirectToAction("EveryView", "Test"); 

A continuación, cree el método ActionResult EveryView() y establecer su punto de ruptura.

public ActionResult EveryView() 
{ 
    return View(); 
} 

Si prueba http://localhost/Test/Index ¿qué ocurre? ¿Funciona?

Si eso no funciona, quizás le interese mirar sus Rutas y asegurarse de no tener ninguna Rutas especiales definidas que puedan hacer que las cosas se rompan.

Como alternativa, puede, dentro de su Global.asax añadir este método:

protected void Application_Error(object sender, EventArgs e) 
{ 
    Exception ex = Server.GetLastError(); 
} 

y establecer un punto de ruptura en la línea para detectar los errores desconocidos.

+0

tuve el mismo problema, en mi caso fue el error, así que lo depuré como se sugirió @Vlince en el archivo Global.asax y obtuve el error –

7

Tuve este problema también en mi proyecto reciente. Finalmente lo resolví agregando [AllowAnonymous] en la acción redireccionada, porque el controlador estaba decorado con el atributo [Authorize] y en este punto el usuario no ha iniciado sesión. Espero que esto sea de ayuda.

1

Tuve este problema y fue porque un filtro personalizado MustBeLoggedIn que había agregado no permitía la redirección a ese método, similar al user2192287.

Esto significaba que el filtro me redirigía a la acción desde la que comenzaba.

Esto pudo haber sido el problema de petko_stankoski como estaba en su controlador de Cuenta.

49

has puesto 'return' else no redirigirá.

return RedirectToAction("EveryView", "Account");

+1

¡¡¡Buena recogida !!! Esto me estaba matando. ¡Porque el código todavía se ejecuta y pasa completamente a través de la línea RedirectToAction sin estrellarse! Muy difícil de depurar y darme cuenta ... Gracias – Aaron

+1

Tuve exactamente el mismo problema. Algo fácil de perder, y no se lanzó ningún mensaje de error en la pantalla. Solo algo que debemos recordar, agregar 'retorno' al comienzo. –

+0

Aaaargh! Te debo £ 5 Bonanza. – Ted

1

que tenía un problema similar. Acabo de eliminar el atributo de publicación [HttpPost] de la función a la que he redirigido.

+0

Eso hace que la función GET (la predeterminada). No es una buena solución. –

+0

No necesariamente. ¡Pruébalo primero! eso podría funcionar – ilans

+0

Sí, funcionará, pero no es una buena solución. Quiero que mi método sea POST, no GET. Estoy trabajando con los principios RESTful. –

-1

comentario a todas las secuencias de comandos y cargados tratan again.some Interferencia guión de este objeto

Cuestiones relacionadas