Redirect to another page in ASP.NET MVC using JavaScript / jQuery

I want to redirect from one page to another page in ASP.NET MVC 3.0 using JavaScript / jQuery / Ajax. At the click of a mouse, I wrote JavaScript code as shown below.

function foo(id) { $.post('/Branch/Details/' + id); } 

My controller code is as follows:

 public ViewResult Details(Guid id) { Branch branch = db.Branches.Single(b => b.Id == id); return View(branch); } 

When I click the button, it invokes the Details action inside the BranchController, but does not return to the Details view.

I did not get any errors or exceptions. It shows status 200 in Firebug . What is wrong in my code and how can I redirect to the details page?

+52
javascript jquery c # asp.net-mvc
Nov 16 '11 at 8:24
source share
6 answers

You are not subscribing to any successful callback in your $ .post AJAX call. This means the query is running, but you are not doing anything with the results. If you want to do something useful with the results, try:

 $.post('/Branch/Details/' + id, function(result) { // Do something with the result like for example inject it into // some placeholder and update the DOM. // This obviously assumes that your controller action returns // a partial view otherwise you will break your markup }); 

On the other hand, if you want to redirect, you absolutely do not need AJAX. You use AJAX only when you want to stay on one page and update only part of it.

So, if you only want to redirect the browser:

 function foo(id) { window.location.href = '/Branch/Details/' + id; } 

As a side note: You should never hardcode URLs. You should always use URL helpers when working with URLs in an ASP.NET MVC application. So:

 function foo(id) { var url = '@Url.Action("Details", "Branch", new { id = "__id__" })'; window.location.href = url.replace('__id__', id); } 
+101
Nov 16 '11 at 8:26
source share

This can be done using a hidden variable in the view, and then using this variable to publish from JavaScript code.

Here is my code in view

 @Html.Hidden("RedirectTo", Url.Action("ActionName", "ControllerName")); 

Now you can use this in your JavaScript file as:

  var url = $("#RedirectTo").val(); location.href = url; 

It worked like a charm for me. Hope this helps too.

+32
Oct 17
source share

You can use:

 window.location.href = '/Branch/Details/' + id; 

But your Ajax code is incomplete without success or error.

+8
Nov 16 '11 at 8:31
source share
 // in the HTML code I used some razor @Html.Hidden("RedirectTo", Url.Action("Action", "Controller")); // now down in the script I do this <script type="text/javascript"> var url = $("#RedirectTo").val(); $(document).ready(function () { $.ajax({ dataType: 'json', type: 'POST', url: '/Controller/Action', success: function (result) { if (result.UserFriendlyErrMsg === 'Some Message') { // display a prompt alert("Message: " + result.UserFriendlyErrMsg); // redirect us to the new page location.href = url; } $('#friendlyMsg').html(result.UserFriendlyErrMsg); } }); </script> 
+3
Jan 12 '17 at 18:08
source share
 <script type="text/javascript"> function lnkLogout_Confirm() { var bResponse = confirm('Are you sure you want to exit?'); if (bResponse === true) { ////console.log("lnkLogout_Confirm clciked."); var url = '@Url.Action("Login", "Login")'; window.location.href = url; } return bResponse; } </script> 
+1
Feb 04 '13 at 7:31
source share

check the code below, it will help you completely

window.opener.location.href = '@ Url.Action ("Action", "EventstController")', window.close ();
0
Aug 01 '17 at 9:11 on
source share



All Articles