2011-08-31 8 views
9

Quindi ho un HttpPost solo ActionResult chiamato Edit. Dopo aver fatto la sua cosa (logica ecc.), Voglio che reindirizzi a un controller diverso. Diciamo che lo HomeController. Eccolo:MVC3 Reindirizza per instradare da 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 provato altre cose, come return RedirectResult(), RedirectToAction(), RedirectToRoute("string") - ma conserva ancora il ritorno vista indice dal controller metodo Edit è (ChairController).

Qual è il modo giusto per farlo ??

+1

Ecco qualcosa di simile già ... [Come si RedirectToRoute dovrebbe essere utilizzato?] [1] Speranza che aiuta ... [1]: http: // StackOverflow. it/questions/1290355/how-is-redirecttoroute-presunto-da-usare –

+0

@ Jan Grazie. Sembra che lavori per quel tizio nel post, ma non per me: S FML –

+1

@Kasper suppongo di aver frainteso la tua domanda. Pensavo avessi detto di ritornare alla stessa azione –

risposta

5

Wow cosa wierdest mai causato questo. Il codice era corretto (come ero sicuro di iniziare). Ho provato a eseguire di nuovo il debug e ho notato che mentre passavo attraverso il codice, il debugger thingo ha solo contrassegnato parte del codice: return RedirectToAction("Index", In realtà si è fermato qui e non ha eseguito lo "Home");. Ho anche notato che il mio punto di interruzione era in realtà giallo e mi stava dicendo che il codice sorgente non era identico all'originale? Il cosa cosa? Continuava a dire che attraverso centinaia di salvataggi, riavvii, costruisce e ricostruisce. All'improvviso ha accettato il codice, il mio punto di interruzione è diventato rosso, il codice ha funzionato bene.

Davvero dispiaciuto per aver atteso il tuo tempo ragazzi!

+1

Probabilmente hai dimenticato di riavviare il tuo server di sviluppo :-P –

18

Typo:

contoller = "Home" 

dovrebbe essere

controller = "Home" 

o:

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

Woops. Errore di battitura. Ma sì, come affermato nella mia domanda, ho già provato RedirectToAction(). Non funziona –

+1

@Kasper Skov, a meno che non abbiate incasinato qualcosa con le vostre definizioni di percorso 'return RedirectToAction (" index "," home ");' funziona perfettamente. –

+0

Hehe lo so. È fottutamente cotta. Controlla la mia risposta. Ci scusiamo per aver atteso il tuo compagno di tempo. –