2011-08-31 28 views
9

Así que tengo un HttpPost solo ActionResult llamado Edit. Después de hacer lo suyo (lógica, etc.), quiero que redirija a un controlador diferente. Digamos el HomeController. Aquí está:MVC3 Redirigir a la ruta desde ActionResult

[HttpPost] 
public ActionResult Edit(Chair chair, string xml) 
{ 
    if (ModelState.IsValid) 
    { 
     try 
     { 
      _repository.EditChair(chair, xml); 
      return RedirectToRoute(new { contoller = "Home", action = "index"}); 
     } 
     catch (Exception ex) 
     { 
      //error msg for failed edit in XML file 
      ModelState.AddModelError("", "Error editing record. " + ex.Message); 
     } 
    } 
    return View(Chair); 

} 

Ive tryed otras cosas como return RedirectResult(), RedirectToAction(), RedirectToRoute("string") - pero todavía sigue volviendo la vista del índice desde el controlador el método Edit está en (ChairController).

¿Cuál es la forma correcta de hacer esto?

+1

Aquí es algo similar ya ... [¿Cómo se supone que se utilizará RedirectToRoute?] [1] Espero que ayuda ... [1]: http: // stackoverflow. com/questions/1290355/how-is-redirecttoroute-supposed-to-be-used –

+0

@Jan Gracias. Parece que está funcionando para ese tipo en la publicación, pero no para mí: S FML –

+1

@Kasper Supongo que entendí mal tu pregunta. Pensé que dijiste que vuelve a la misma acción –

Respuesta

5

Vaya cosa wierdest vez causó esto. El código era correcto (como estaba seguro de empezar). Intenté depurarlo una vez más, y noté mientras revisaba el código, que el depurador solo marcaba parte del código: return RedirectToAction("Index", De hecho, se detuvo allí y no pasó por el "Home");. También me di cuenta de que mi punto de interrupción era en realidad amarillo y me decía algo acerca de que el código fuente no era idéntico al original. ¿Qué qué? Siguió diciendo que a través de cientos de guardados, reinicios, construcciones y reconstrucciones. De la nada, aceptó el código, mi punto de interrupción se volvió rojo, el código funcionó bien.

Realmente lo siento por dejar de lado su tiempo chicos!

+1

Probablemente haya olvidado reiniciar su servidor de desarrollo :-P –

18

TIPO:

contoller = "Home" 

debería ser

controller = "Home" 

o:

return RedirectToAction("index", "home"); 
+1

Woops. Error al error tipográfico Pero sí, como dije en mi pregunta, ya probé RedirectToAction(). No funciona –

+1

@Kasper Skov, a menos que haya estropeado algo con las definiciones de su ruta 'return RedirectToAction (" index "," home ");' funciona perfectamente bien. –

+0

Hehe lo sé. Su f * cked arriba. Mira mi propia respuesta. Perdón por ignorar a tu compañero de tiempo. –

Cuestiones relacionadas