Перенаправление на другую страницу в ASP.NET MVC с использованием JavaScript/jQuery
Я хочу перенаправить с одной страницы на другую страницу в ASP.NET MVC 3.0 с использованием JavaScript/jQuery / Ajax. На событии нажатия кнопки я написал код 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);
}
когда я нажимаю на кнопку, он вызывает действие Details внутри BranchController, но он не возвращается в представление Details.
Я не получил никаких ошибок или исключений. Он показывает статус 200 OK в Firebug. Что не так в моем коде и как я могу перенаправить на страницу просмотра сведений?
6 ответов:
вы не подписываетесь на любой успешный обратный вызов в вашем $.после AJAX-вызов. Это означает, что запрос выполняется, но не с результатами. Если вы хотите сделать что-то полезное с результатами, попробуйте:
$.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 });С другой стороны, если вы хотите перенаправить, вам абсолютно не нужен AJAX. Вы используете AJAX только тогда, когда хотите остаться на той же странице и обновить только ее часть.
Так что если вы только хотели перенаправить браузер:
function foo(id) { window.location.href = '/Branch/Details/' + id; }в качестве примечания: Вы никогда не должны быть жестко кодировать URL-адреса, как это. Вы всегда должны использовать помощники url при работе с URL-адресами в ASP.NET приложение MVC. Итак:
function foo(id) { var url = '@Url.Action("Details", "Branch", new { id = "__id__" })'; window.location.href = url.replace('__id__', id); }
Это можно сделать, используя скрытую переменную в представлении, а затем используя эту переменную для публикации из кода JavaScript.
вот мой код в вид
@Html.Hidden("RedirectTo", Url.Action("ActionName", "ControllerName"));теперь вы можете использовать это в файле JavaScript как:
var url = $("#RedirectTo").val(); location.href = url;это сработало как шарм для меня. Надеюсь, тебе это тоже поможет.
вы можете использовать:
window.location.href = '/Branch/Details/' + id;но ваш код Ajax является неполным без успеха или ошибок функций.
// 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>
проверьте код ниже, это поможет полной для вас
окно.открывалка.местоположение.href = ' @Url.Действие ("действие", "EventstController")', окно.закрывать();
Comments