我有两个控制器,都叫AccountController
。其中一个,我们称之为Controller A
,位于名为Area
的{{1}}中,另一个称为Admin
,不在任何Controller B
中(我想这意味着它是默认的Area
?)。 Area
有一个名为Controller B
的{{1}}。我在action method
中有一个Login
,其中包含此行
action method
问题是,当执行此行时,我得到Controller A
,因为尝试重定向到return RedirectToAction("LogIn", "Account");
中不存在的404
。我想拨打action
中的Controller A
。这可能吗?
答案 0 :(得分:213)
您可以在area
参数中提供routeValues
。试试这个:
return RedirectToAction("LogIn", "Account", new { area = "Admin" });
或者
return RedirectToAction("LogIn", "Account", new { area = "" });
取决于您的目标区域。
答案 1 :(得分:24)
使用此:
return RedirectToAction("LogIn", "Account", new { area = "" });
这将重定向到“全局”区域中LogIn
控制器中的Account
操作。
正在使用此RedirectToAction
重载:
protected internal RedirectToRouteResult RedirectToAction(
string actionName,
string controllerName,
Object routeValues
)
答案 2 :(得分:6)
您可以使用:
return RedirectToAction("actionName", "controllerName", new { area = "Admin" });
答案 3 :(得分:1)
使用此:
var result = dataPage.Where(x => values.Contains(x.udfs.{field}));
答案 4 :(得分:0)
尝试切换它们:
return RedirectToAction("Account", "Login");
我尝试了,并且奏效了。
答案 5 :(得分:0)
这应该有效
return RedirectToAction("actionName", "controllerName", null);
答案 6 :(得分:0)
RedirectToRoute() 也可用。此外,更好的方法可能是使用 nameof(),这样您就可以避免在代码库中对字符串进行硬编码。
return RedirectToRoute(nameof(AccountController) + nameof(AccountController.Login));
而且,如果您要重定向到带有参数的端点,请将这些参数一起传递。
return RedirectToRoute(nameof(Account) + nameof(Account.ChangePassword), new { id = id });