2011-08-31 2 views
9

J'ai donc un HttpPost seulement ActionResult appelé Edit. Après avoir fait son truc (logique etc), je veux qu'il redirige vers un autre contrôleur. Disons le HomeController. Ici, il est:MVC3 Rediriger vers la route à partir de 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 d'autres choses comme return RedirectResult(), RedirectToAction(), RedirectToRoute("string") - mais il garde encore revenir sur l'index du contrôleur de la méthode Edit est en (ChairController).

Quelle est la bonne façon de le faire?

+1

Voici quelque chose de similaire déjà ... [Comment est RedirectToRoute censé être utilisé?] [1] it helps ... [1]: http: // stackoverflow. com/questions/1290355/how-is-redirecttoroute-supposé-être-utilisé –

+0

@Jan Merci. Il semble travailler pour ce gars-là dans le post, mais pas pour moi: S FML –

+1

@Kasper suppose que j'ai mal compris votre question. Je pensais que vous aviez dit revenir à la même action –

Répondre

5

Wow chose wierdest jamais fait cela. Le code était correct (comme j'étais sûr de commencer). J'ai essayé de déboguer une fois de plus, et j'ai remarqué que je suis passé par le code, que le débogueur thingo seulement marqué une partie du code: return RedirectToAction("Index", Il s'est effectivement arrêté là, et n'a pas passé par le "Home");. J'ai également remarqué que mon point d'arrêt était en fait jaune, et me disait quelque chose au sujet du code source n'était pas identique à l'original? Le quoi quoi? Il a continué à dire cela à travers des centaines d'arrêts, redémarre, construit et reconstruit. À l'improviste, il a accepté le code, mon point d'arrêt est devenu rouge, le code a très bien fonctionné.

Vraiment désolé de perdre votre temps les gars!

+1

Vous avez probablement oublié de redémarrer votre serveur de développement :-P –

18

Typo:

contoller = "Home" 

devrait être

controller = "Home" 

ou:

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

Woops. Échouer faute de frappe. Mais oui, comme indiqué dans ma question, déjà essayé RedirectToAction(). Ne fonctionne pas. –

+1

@Kasper Skov, à moins que vous ne vous soyez trompé avec les définitions de votre route 'return RedirectToAction (" index "," home ");' fonctionne parfaitement. –

+0

Hehe je sais. Il s'est faufilé. Découvrez ma propre réponse. Désolé de câliner votre coéquipier. –

Questions connexes