2012-01-10 25 views
13

Nel AccountController, alla fine di un metodo che ho:RedirectToAction non funziona affatto

RedirectToAction("EveryView", "Account"); 

Nello stesso file di controllo che ho questo metodo:

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

Ma questo metodo non viene mai chiamato. Ho un breakpoint su "{" e non viene mai colpito!

+3

Questo potrebbe non essere il problema, ma se è all'interno dello stesso 'Controller', si può semplicemente utilizzare' RedirectToAction ("EveryView"); ' – Rondel

+0

@Rondel L'ho provato e non importa. –

+6

Hai semplicemente 'RedirectToAction()'? Oppure 'return RedirectToAction (...)'. L'ho provato e con il 'return' funzionava bene. –

risposta

10

Humm ... difficile vedere (o dire) quale sia il problema dal momento che il codice sembra piuttosto banale.

Forse un po 'di debug potrebbe essere d'aiuto! Prova a creare un nuovo TestController hanno all'interno l'indice di default() ActionResult fare questo:

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

Quindi, creare il metodo ActionResult EveryView() e impostare il punto di interruzione.

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

Se si tenta http://localhost/Test/Index cosa succede? Funziona?

Se ciò non funziona, forse potresti voler controllare i tuoi percorsi e accertarti di non aver definito percorsi speciali che potrebbero far crollare le cose.

In alternativa, è possibile, all'interno del vostro Global.asax aggiungere questo metodo:

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

e impostare un punto di interruzione sulla linea per rilevare eventuali errori sconosciuti.

+0

ho avuto lo stesso problema, nel mio caso si trattava dell'errore, quindi l'ho debugato come @Vlince suggerito nel file Global.asax e ho ricevuto l'errore –

7

Ho avuto questo problema anche nel mio recente progetto. L'ho risolto finalmente aggiungendo [AllowAnonymous] all'azione reindirizzata, perché il controller decorava con l'attributo [Autorizza], ea questo punto l'utente non ha effettuato l'accesso. Spero che questo sia di aiuto.

1

Ho avuto questo problema ed era perché un filtro MustBeLoggedIn personalizzato che avevo aggiunto non consentiva il reindirizzamento a tale metodo, simile a user2192287.

Ciò significava che il filtro mi stava reindirizzando all'azione da cui stavo iniziando.

Questo potrebbe essere stato il problema di petko_stankoski come era nel loro controller Account.

49

hai messo 'return' else non reindirizzerà.

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

+1

Buona ripresa !!! Questo mi stava uccidendo. Perché il codice continua a girare e passa completamente attraverso la linea RedirectToAction senza crash !!! Molto difficile da debugare e realizzare ... Grazie – Aaron

+1

Ho avuto lo stesso identico problema. È facile perdere e nessun messaggio di errore è stato proiettato sullo schermo. Solo qualcosa che dobbiamo ricordare, aggiungendo "return" all'inizio. –

+0

Aaaargh! Ti devo £ 5 Bonanza. – Ted

1

Ho avuto un problema simile. Ho appena rimosso l'attributo post [HttpPost] dalla funzione a dove ho reindirizzato.

+0

Ciò rende la funzione GET (l'impostazione predefinita). Non è una buona soluzione. –

+0

Non necessariamente. Provalo prima! potrebbe funzionare – ilans

+0

Sì, funzionerà, ma non è una buona soluzione. Voglio che il mio metodo sia POST, non GET. Sto lavorando secondo i principi RESTful. –

-1

Commento tutti gli script caricati e cercano again.some interferenza sceneggiatura di questo oggetto