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 を使用しないでください)。
- リダイレクト結果を返す代わりに、クライアント側でリダイレクトを行う JavaScript を含むビューを返します。
#1についてコメントがある人はいますか?または、#2 が適切な解決策である場合、「JavaScript ビューのリダイレクト」はどのようになりますか?