コントローラ アクションでは、リダイレクト先のコントローラ アクションを指すPartialView
または のいずれかを返すことができます。JsonResult
public ActionResult SomeAction()
{
if (HasPassedValidation)
{
// everything went fine => let's return a partial view
// that will be updated
return PartialView();
}
// something went wrong with the validation =>
// we return a JsonResult pointing to the controller
// action we want to redirect to
var result = new
{
redirectTo = Url.Action("SomeOtherAction", "SomeController")
};
return Json(result, JsonRequestBehavior.AllowGet);
}
次に、AJAX 呼び出しテストの成功コールバック内で、それぞれの手順を実行します。
success: function(result) {
if (result.redirectTo) {
// the controller action returned a JSON result => there was an error
// => let's redirect
window.location.href = result.redirectTo;
} else {
// everything went fine => let's update the DOM with the partial
$('#results').html(result);
}
}