使用JavaScript / jQueryredirect到ASP.NET MVC中的另一个页面

我想使用JavaScript / jQuery / Ajax从ASP.NET MVC 3.0中的一个页面redirect到另一个页面。 在button点击事件我已经写了像下面的JavaScript代码。

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

我的控制器代码是这样的:

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

当我点击一个button时,它正在调用BranchController中的Details操作,但它不会返回到Details视图。

我没有得到任何错误或例外。 它在Firebug中显示状态200 OK。 我的代码有什么问题,我怎样才能redirect到Details视图页面?

您不会订阅$ .post AJAX调用中的任何成功callback。 这意味着请求被执行,但是你对结果什么也不做。 如果你想对结果做一些有用的事情,请尝试:

 $.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 }); 

另一方面,如果你想redirect,你绝对不需要AJAX。 只有当您想要保留在同一页面上并仅更新其中的一部分时,才能使用AJAX。

所以如果你只想redirect浏览器:

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

作为一个方面说明:你不应该像这样硬编码的URL。 处理ASP.NET MVC应用程序中的URL时,应始终使用url助手。 所以:

 function foo(id) { var url = '@Url.Action("Details", "Branch", new { id = "__id__" })'; window.location.href = url.replace('__id__', id); } 

这可以通过在视图中使用隐藏variables来完成,然后使用该variables从JavaScript代码中发布。

这是我的代码在视图中

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

现在你可以在JavaScript文件中使用这个:

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

它像我的魅力工作。 我希望它也能帮助你。

您可以使用:

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

但是,你的Ajax代码是不完整的,没有成功或错误的function。

 // 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> 
 <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> 

检查下面的代码将帮助完整的你

window.opener.location.href ='@ Url.Action(“Action”,“EventstController”)',window.close();