2012-05-28 33 views
86

Tengo dos controladores, ambos llamados AccountController. Uno de ellos, vamos a llamarlo Controller A, es decir en una llamada AreaAdmin y el otro, permite llamarlo Controller B, no es de ninguna Area (supongo que eso significa que es el valor por defecto en Area?). Controller B tiene un action method llamado Login. Tengo una action method en Controller A, que tiene esta líneaRedirigir a la acción en otro controlador

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

El problema es que tengo un 404 cuando esta línea es ejecutado porque se hace un intento de redirigir a un inexistente action en Controller A. Quiero llamar al action method en Controller B. es posible?

+1

posible duplicado de [MVC Redirigir a Índice de otro controlador] (http://stackoverflow.com/questions/7892094/mvc-redirect- to-index-from-another-controller) – musefan

Respuesta

173

Puede suministrar el area en el parámetro routeValues. Prueba esto:

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

O

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

dependiendo de la zona en la que está apuntando.

+0

¿Qué sucede si quiero pasar de una vista en un área determinada a una acción de un controlador que no se encuentra en ningún área? Al igual que en MVC5, el botón LogOff en la parte superior derecha está en AccountController, que no reside en ningún área. Y quiero LogOff desde una vista en un área determinada ??? –

+1

Mi segundo ejemplo, 'area =" "', lo hará por usted. –

+0

Gracias, mucho –

17

Utilice esta:

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

Esto redirigirá a la acción en el controlador LogInAccount en la zona "global".

Se trata de utilizar este RedirectToAction sobrecarga:

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

MSDN

Cuestiones relacionadas