I have an @Ajax.BeginForm
for my model which has a boolean value (@Html.CheckBoxFor
). If this is checked, I want my HttpPost action to redirect to a new page. Otherwise I want it to just continue being an @Ajax.BeginForm
and update part of the page.
Here is my HttpPost action (Note: Checkout is the boolean value in my model)
Controller:
[HttpPost] public ActionResult UpdateModel(BasketModel model) { if (model.Checkout) { // I want it to redirect to a new page return RedirectToAction("Checkout"); } else { return PartialView("_Updated"); } }
BeginForm() will create a form on the page that submits its values to the server as a synchronous HTTP request, refreshing the entire page in the process. Ajax. BeginForm() creates a form that submits its values using an asynchronous ajax request.
Between RedirectToAction() and Redirect() methods, best practice is to use RedirectToAction() for anything dealing with your application actions/controllers. If you use Redirect() and provide the URL, you'll need to modify those URLs manually when you change the route table.
Ajax. BeginForm is the extension method of the ASP.NET MVC Ajax helper class, which is used to submit form data to the server without whole page postback. To work Ajax. BeginForm functionality properly, we need to add the reference of jquery.
RedirectToRoute(String, Object)Redirects to the specified route using the route name and route values.
You could use JSON and perform the redirect on the client:
[HttpPost] public ActionResult UpdateModel(BasketModel model) { if (model.Checkout) { // return to the client the url to redirect to return Json(new { url = Url.Action("Checkout") }); } else { return PartialView("_Updated"); } }
and then:
@using (Ajax.BeginForm("UpdateModel", "MyController", new AjaxOptions { OnSuccess = "onSuccess", UpdateTargetId = "foo" })) { ... }
and finally:
var onSuccess = function(result) { if (result.url) { // if the server returned a JSON object containing an url // property we redirect the browser to that url window.location.href = result.url; } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With