Saya menggunakan Ajax.BeginForm untuk membuat formulir yang akan melakukan postback ajax ke tindakan pengontrol tertentu dan kemudian jika tindakan berhasil, pengguna harus dialihkan ke halaman lain (jika tindakan gagal maka pesan status ditampilkan menggunakan 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]
}
Jika penghapusan berhasil, saya mengembalikan hasil Redirect:
[Authorize]
public ActionResult Delete(Int32 UserId)
{
UserRepository.DeleteUser(UserId);
return Redirect(Url.Action("Index", "Home"));
}
Tapi tampilan Home Controller Index dimuat ke UpdateTargetId dan oleh karena itu saya berakhir dengan sebuah halaman di dalam sebuah halaman. Dua hal yang saya pikirkan:
- Entah saya merancang ini salah dan harus menangani jenis tindakan ini secara berbeda (tidak menggunakan ajax).
- Alih-alih mengembalikan hasil Pengalihan, kembalikan tampilan yang memiliki javascript di dalamnya yang melakukan pengalihan di sisi klien.
Apakah ada yang punya komentar di # 1? Atau jika # 2 adalah solusi yang baik, seperti apa tampilan "redirect javascript"?