it-swarm.com.de

Wie kann von einer JavaScript-Methode auf eine Aktion umgeleitet werden?

Ich habe einen Eingabetyp = "Button"

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

und JavaScript-Methode:

function DeleteJob() {

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

Wie kann ich stattdessen "true" zurückgeben, zu Action DeleteJob umleiten?

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

Umleiten:

function DeleteJob() {
    if (confirm("Do you really want to delete selected job/s?"))
        window.location.href = "your/url";
    else
        return false;
}
33
Peter Porfy
function DeleteJob() {
    if (confirm("Do you really want to delete selected job/s?"))
        window.location.href = "/{controller}/{action}/{params}";
    else
        return false;
}
32
yojimbo87

Ich wünschte, ich könnte nur die Antwort von yojimbo87 kommentieren, um dies zu posten, aber ich habe noch nicht genug Ruf, um einen Kommentar abzugeben. Es wurde darauf hingewiesen, dass dieser relative Pfad nur von der Wurzel aus funktioniert:

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

Ich wollte nur bestätigen, dass Sie @ Url.Content verwenden können, um den absoluten Pfad anzugeben:

function DeleteJob() {
    if (confirm("Do you really want to delete selected job/s?"))
        window.location.href = '@Url.Content("~/{controller}/{action}/{params}")';
    else
        return false;
}
13
RJB

Vielleicht ist es besser, mit der DeleteJob-URL anstelle der Schaltfläche einen Anker zu machen?

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

und verwenden Sie Ihr Javascript, das Sie bereits geschrieben haben:

function DeleteJob() {

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

Wenn die Funktion also true zurückgibt, werden Sie umgeleitet. Wenn die Funktion false zurückgibt, bleiben Sie auf der Seite.

10
wassertim

Verwenden Sie die Methode @ Url.Action. Dies funktioniert und bestimmt die richtige Route, unabhängig davon, auf welchem ​​IIS Server Sie bereitstellen.

Beispiel - Window.location.href = "@ Url.Action (" Action "," Controller ")";

im Falle der Index-Aktion auf dem Home-Controller -

5
Chris M.

Ich hatte ein wenig Probleme damit, weil ich Knockout verwenden wollte, um den Button mit dem Click-Ereignis zu verbinden. Hier ist mein Button und die entsprechende Funktion aus meinem Ansichtsmodell.

<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")';
    }
}
2
Jim Sims

Sie können entweder eine Ajax-Anfrage an den Server senden oder window.location für diese URL verwenden.

1
Fourj

(Dies ist eher ein Kommentar, aber ich kann aufgrund des schlechten Rufs nicht kommentieren, jemand könnte diese nützlich finden.)

Wenn Sie sich in sth.com/product befinden und nach sth.com/product/index use umleiten möchten

window.location.href = "index";

Wenn Sie zu sth.com/home weiterleiten möchten

window.location.href = "/home";

und wenn Sie möchten, möchten Sie zu sth.com/home/index umleiten

window.location.href = "/home/index";
0
Krisi Suci