是的,这是可能的。事实上,你发布的代码就是你如何做的!
Controller.RedirectToAction
返回a RedirectToRouteResult
,Controller.Json
返回JsonResult
。他们都从ActionResult
继承,所以返回他们作为ActionResult
将工作得很好。
如果你正在使用AJAX工作:
即使你没有说你打电话背景是什么,由insightful comment by Thiago Ferreira提到,重定向不使用AJAX工作。 您需要返回错误消息,然后在客户端处理它。
例如你的操作方法:
public ActionResult Example(string code)
{
if(string.IsNullorEmpty(code))
{
UrlHelper urlHelper = new UrlHelper(HttpContext.Request.RequestContext);
string actionUrl = urlHelper.Action("Index", "Home");
return Json(new { success = false, message = "Code not provided", redirectTo = actionUrl});
}
else
{
return Json(new { success = true, message= "Next step"});
}
}
处理它在客户端:
if(response.success) {
// yay
} else if(response.redirectTo) {
window.location.href = response.redirectTo;
}
是的,有可能同时返回,因为他们是'ActionResults'。但是,如果您在Ajax调用中返回'RedirectToAction',它将不会重定向。这是你的问题吗? –