在另一个控制器中redirect到操作

我有两个控制器,都称为AccountController 。 其中之一,让我们称之为Controller A ,在一个Area称为Admin和另一个,让我们称之为Controller B ,不在任何Area (我想这意味着它在默认Area ?)。 Controller B有一个称为Loginaction methodController A有一个action method ,它有这一行

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

问题是我得到一个404当这条线被执行,因为试图redirect到Controller A不存在的action 。 我想调用Controller Baction method 。 这可能吗?

您可以在routeValues参数中提供该area 。 尝试这个:

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

要么

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

取决于你要瞄准哪个领域。

用这个:

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

这将redirect到“全局”区域中的Account控制器中的LogIn操作。

它使用这个RedirectToAction重载:

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

MSDN