Я использую 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»?