I am using the Ajax.BeginForm to create a form the will do an ajax postback to a certain controller action and then if the action is successful, the user should get redirected to another page (if the action fails then a status message gets displayed using the 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]
}
If the delete is successful I am returning a Redirect result:
[Authorize]
public ActionResult Delete(Int32 UserId)
{
UserRepository.DeleteUser(UserId);
return Redirect(Url.Action("Index", "Home"));
}
But the Home Controller Index view is getting loaded into the UpdateTargetId and therefore I end up with a page within a page. Two things I am thinking about:
Does anyone have comments on #1? Or if #2 is a good solution, what would the "redirect javascript view" look like?
You can use JavascriptResult
to achieve this.
To redirect:
return JavaScript("window.location = 'http://www.google.co.uk'");
To reload the current page:
return JavaScript("location.reload(true)");
Seems the simplest option.