Ajax.BeginFormを使用してフォームを作成し、特定のコントローラーアクションにajaxポストバックを行い、アクションが成功した場合、ユーザーは別のページにリダイレクトされる必要があります(アクションが失敗した場合、ステータスメッセージが表示されます。 AjaxOptions UpdateTargetId)。
using (Ajax.BeginForm("Delete", null,
new { userId = Model.UserId },
new AjaxOptions { UpdateTargetId = "UserForm", LoadingElementId = "DeletingDiv" },
new { name = "DeleteForm", id = "DeleteForm" }))
{
[HTML DELETE BUTTON]
}
削除が成功した場合、リダイレクト結果を返します。
[Authorize]
public ActionResult Delete(Int32 UserId)
{
UserRepository.DeleteUser(UserId);
return Redirect(Url.Action("Index", "Home"));
}
しかし、Home Controller IndexビューがUpdateTargetIdに読み込まれているため、ページ内のページになってしまいます。私が考えている2つのこと:
- 私はこれを間違って設計していて、このタイプのアクションを異なる方法で処理する必要があります(ajaxは使用しません)。
- Redirectの結果を返す代わりに、クライアント側でリダイレクトを行うJavaScriptを含むビューを返します。
#1についてコメントはありますか?または、#2が適切なソリューションである場合、「リダイレクトJavaScriptビュー」はどのようになりますか?