Używam formularza Ajax.BeginForm do utworzenia formularza, który wykona odsyłanie ajax'a do określonej akcji kontrolera, a następnie, jeśli akcja zakończy się powodzeniem, należy przekierować użytkownika na inną stronę (jeśli akcja się nie powiedzie, komunikat stanu zostanie pobrany wyświetlane przy użyciu AjaxOptions UpdateTargetId).Jak uzyskać odpowiedź Ajaxa ASP.NET MVC, aby przekierować na nową stronę zamiast wstawiania widoku do UpdateTargetId?
using (Ajax.BeginForm("Delete", null,
new { userId = Model.UserId },
new AjaxOptions { UpdateTargetId = "UserForm", LoadingElementId = "DeletingDiv" },
new { name = "DeleteForm", id = "DeleteForm" }))
{
[HTML DELETE BUTTON]
}
Jeżeli kasowania powiedzie Wracam wynik Przekierowanie:
[Authorize]
public ActionResult Delete(Int32 UserId)
{
UserRepository.DeleteUser(UserId);
return Redirect(Url.Action("Index", "Home"));
}
ale widok Strona Główna Kontroler jest coraz załadowany do UpdateTargetId i dlatego skończyć z strony w stronie. Dwie rzeczy, myślę o:
- Albo ja architecting to źle i powinien obsługiwać ten typ działania inaczej (nie używając Ajax).
- Zamiast zwracać wynik przekierowania , należy zwrócić widok, który zawiera w nim javascript, który ma przekierowanie po stronie klienta.
Czy ktoś ma uwagi na temat nr 1? Lub jeśli # 2 jest dobrym rozwiązaniem, jak wyglądałby "widok przekierowania javascript"?
Awesome ... Pomógł mi. – CrazyCoderz
To powinna być zaakceptowana odpowiedź. – Alex
Zgadzam się, to jest właściwe podejście. Ta odpowiedź http://stackoverflow.com/a/2841608/498969 pokazuje, jak można domyślnie zastosować tę funkcję przy użyciu kontrolera podstawowego. –