Я використовую 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"));
}
Але подання Index Controller Home завантажується в UpdateTargetId, і, отже, у мене з’являється сторінка всередині сторінки. Дві речі, про які я думаю:
- Або я розробляю це неправильно, і повинен поводитися з цим типом дій по-іншому (не використовуючи ajax).
- Замість повернення результату переадресації, поверніть подання, в якому є javascript, що робить переспрямування на стороні клієнта.
Хтось має коментарі до No1? Або, якщо №2 є хорошим рішенням, як би виглядав "перегляд переадресації javascript"?