Я использую 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 загружается в UpdateTargetId, и поэтому я получаю страницу на странице. Две вещи, о которых я думаю:
- Либо я занимаюсь архитектурой неправильно и должен обрабатывать этот тип действие по-разному (не используя ajax).
- Вместо того, чтобы возвращать перенаправление результата, верните представление, которое javascript, в котором выполняется перенаправлять на стороне клиента.
Есть ли у кого есть комментарии к # 1? Или, если # 2 - хорошее решение, как выглядит "переадресация JavaScript-просмотра"?