我通过ajax调用调用一个名为RedirectToHome的控制器动作方法。在该动作方法中,我使用RedirectToAction来执行Spa控制器的Index方法。即使代码成功执行,此重定向也不起作用。我假设发生了这种情况,因为RedirectToHome是通过ajax调用调用的。这就是为什么我也尝试在第一次请求的ajax调用成功时使用ajax调用调用Index方法。但是即使通过第二次ajax调用,我也看到了Index方法被调用但是视图从未被渲染。控制台中没有错误。
$.ajax({
url: '@HttpContext.Current.Request.Url' + "Account/RedirectToHome",
data: { email: userEmail },
success: function (data) {
$.ajax({
url: '@HttpContext.Current.Request.Url' + "Spa/Index",
data: { isAuthenticated:true,email: userEmail },
success: function () {
}
});
}
});
public ActionResult RedirectToHome(string email)
{
if (ValidateDomain(email))
return RedirectToAction("Index", "Spa", new { isAuthenticated = true, email = email });
else
return RedirectToAction("ExternalLoginFailure");
}
答案 0 :(得分:1)
使用@Url.Action()
,而不是Spa/Index
。
$.ajax({
data: { email: userEmail },
success: function (data) {
$.ajax({
url: '@Url.Action("Index", "Spa")',
data: { isAuthenticated:true,email: userEmail },
success: function () {
//use your redirect code here, not in action
if(result.isValidDomain)
{
document.location.href = '@Url.Action("Index", "Spa")/' + '?isAuthenticated=' + true;
}
else
{
document.location.href = '@Url.Action("ExternalLoginFailure", "Controller")';
}
}
});
}
});