Как перенаправить на действие из метода JavaScript? - PullRequest
37 голосов
/ 17 марта 2011

У меня есть тип ввода = "кнопка"

<input type="button" name="DeleteJob" runat="server" value="Löschen" onclick="DeleteJob()" />

и метод JavaScript:

function DeleteJob() {

    if (confirm("Do you really want to delete selected job/s?"))
        return true;
    else
        return false;
}

Как вместо этого вернуть true, перенаправить на Action DeleteJob?

[HttpGet]
public ActionResult DeleteJob(string selectedObject)
{
    return View();
}

Ответы [ 8 ]

33 голосов
/ 17 марта 2011

Для перенаправления:

function DeleteJob() {
    if (confirm("Do you really want to delete selected job/s?"))
        window.location.href = "your/url";
    else
        return false;
}
32 голосов
/ 17 марта 2011
function DeleteJob() {
    if (confirm("Do you really want to delete selected job/s?"))
        window.location.href = "/{controller}/{action}/{params}";
    else
        return false;
}
14 голосов
/ 14 февраля 2013

Я хотел бы просто прокомментировать ответ yojimbo87, чтобы опубликовать это, но у меня пока недостаточно репутации, чтобы комментировать. Было отмечено, что этот относительный путь работает только от корня:

        window.location.href = "/{controller}/{action}/{params}";

Просто хотел подтвердить, что вы можете использовать @ Url.Content для указания абсолютного пути:

function DeleteJob() {
    if (confirm("Do you really want to delete selected job/s?"))
        window.location.href = '@Url.Content("~/{controller}/{action}/{params}")';
    else
        return false;
}
10 голосов
/ 17 марта 2011

Может быть, лучше сделать якорь с URL DeleteJob вместо кнопки?

<a href="<%=Url.Action("DeleteJob", "YourController", new {selectedObject="someObject"})%>" onclick="return DeleteJob()">Löschen</a>

и используйте свой JavaScript, который вы уже написали:

function DeleteJob() {

        if (confirm("Do you really want to delete selected job/s?"))
            return true;
        else
            return false;
    }

Так что если функция вернет true - вы будете перенаправлены. Если функция возвращает false - вы все равно остаетесь на странице.

6 голосов
/ 01 апреля 2015

Используйте метод @ Url.Action. Это сработает и определит правильный маршрут независимо от того, на каком сервере IIS вы развертываете.

ПРИМЕР- window.location.href = "@ Url.Action (" Действие "," Контроллер ")";

так в случае действия Index на контроллере Home - window.location.href = "@ Url.Action (" Index "," Home ")";

2 голосов
/ 29 сентября 2016

Я немного боролся с этим, потому что хотел использовать Knockout, чтобы привязать кнопку к событию click.Вот моя кнопка и соответствующая функция из моей модели вида.

<a class="btn btn-secondary showBusy" data-bind="click: back">Back to Dashboard</a>

var vm = function () {
...
    self.back = function() {
        window.location.href = '@Url.Action("LicenseDashboard", "Application")';
    }
}
1 голос
/ 17 марта 2011

Вы можете отправить Ajax-запрос на сервер или использовать window.location для этого URL.

0 голосов
/ 26 ноября 2018

(Это больше комментарий, но я не могу комментировать из-за низкой репутации, кто-то может найти это полезным)

Если вы в sth.com / product и вы хотите перенаправить на sth.com / product / index , используйте

window.location.href = "index";

Если вы хотите перенаправить на sth.com / home

window.location.href = "/home";

и если вы хотите, вы хотите перенаправить на sth.com / home / index

window.location.href = "/home/index";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...