ฉันใช้ 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 ดังนั้นฉันจึงจบลงด้วยหน้าภายในหนึ่งหน้า สองสิ่งที่ฉันคิดเกี่ยวกับ:
- ฉันกำลังออกแบบสิ่งนี้ผิดและควรจัดการการกระทำประเภทนี้แตกต่างกัน (ไม่ใช้ ajax)
- แทนที่จะส่งคืนผลลัพธ์การเปลี่ยนเส้นทางให้ส่งคืนมุมมองที่มีจาวาสคริปต์อยู่ในนั้นซึ่งทำการเปลี่ยนเส้นทางในฝั่งไคลเอ็นต์
ใครมีความคิดเห็นเกี่ยวกับ # 1? หรือถ้า # 2 เป็นทางออกที่ดี "redirect javascript view" จะเป็นอย่างไร