2012-05-28 16 views
86

Ho due controller, entrambi denominati AccountController. Uno di loro, chiamiamolo Controller A, è in un Area chiamato Admin e l'altro, lo chiamiamo Controller B, non è in alcun Area (suppongo che questo sia nel valore predefinito Area?). Controller B ha un action method chiamato Login. Ho un action method in Controller A, che ha questa lineaReindirizza all'azione in un altro controller

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

Il problema è che ho un 404 quando questa linea viene eseguito a causa di un tentativo di reindirizzare a un inesistente action in Controller A. Voglio chiamare lo action method in Controller B. È possibile?

+1

possibile duplicato del [MVC reindirizzamento all'indice da un altro controller] (http://stackoverflow.com/questions/7892094/mvc-redirect- to-index-from-another-controller) – musefan

risposta

173

È possibile fornire area nel parametro routeValues. Prova questo:

return RedirectToAction("LogIn", "Account", new { area = "Admin" }); 

O

return RedirectToAction("LogIn", "Account", new { area = "" }); 

a seconda di quale area si sta puntando.

+0

cosa succede se voglio passare da una vista in una determinata area all'azione di un controller che non è in nessuna area. Come in MVC5, il pulsante LogOff in alto a destra si trova in AccountController, che non risiede in nessuna area. E voglio LogOff da una vista in una certa area ??? –

+1

Il mio secondo esempio, 'area =" "', lo farà per te. –

+0

Grazie mille –

17

Utilizzare questa:

return RedirectToAction("LogIn", "Account", new { area = "" }); 

Questo reindirizzerà alla LogIn azione nel controllo Account nell'area "globale".

Si utilizza questo RedirectToAction sovraccarico:

protected internal RedirectToRouteResult RedirectToAction(
    string actionName, 
    string controllerName, 
    Object routeValues 
) 

MSDN

Problemi correlati