使用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();