是的,這是可能的。事實上,你發佈的代碼就是你如何做的!
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',它將不會重定向。這是你的問題嗎? –