Вопрос по jquery, asp.net-mvc, javascript, c# – Перенаправление на другую страницу в 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 вподжигатель, Что не так в моем коде и как я могу перенаправить на страницу просмотра сведений?
используя скрытую переменную в представлении, а затем используя эту переменную для публикации из кода JavaScript.
Вот мой код в представлении
@Html.Hidden("RedirectTo", Url.Action("ActionName", "ControllerName"));
Теперь вы можете использовать это в файле JavaScript как:
var url = $("#RedirectTo").val();
location.href = url;
Это сработало как прелесть для меня. Я надеюсь, что это вам тоже поможет.
$ .post 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-адресами в приложении ASP.NET MVC всегда следует использовать помощники по URL. Так:
function foo(id) {
var url = '@Url.Action("Details", "Branch", new { id = "__id__" })';
window.location.href = url.replace('__id__', id);
}
url
как глобальная переменная внутри вашего представления:<script type="text/javascript">var url = '@Url.Action("Details", "Branch", new { id = "__id__" })';</script>
, И тогда вы можете использовать его в своем отдельном файле JavaScript.
// 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>