44 votes

Comment rediriger vers l'action à partir de la méthode JavaScript ?

J'ai une entrée type="bouton"

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

et méthode JavaScript :

 function DeleteJob() {

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

Comment puis-je plutôt retourner true, rediriger vers Action DeleteJob ?

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

44voto

Peter Porfy Points 4351

Pour rediriger :

 function DeleteJob() {
    if (confirm("Do you really want to delete selected job/s?"))
        window.location.href = "your/url";
    else
        return false;
}

35voto

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

17voto

RJB Points 372

J'aimerais pouvoir simplement commenter la réponse de yojimbo87 pour publier ceci, mais je n'ai pas encore assez de réputation pour commenter. Il a été souligné que ce chemin relatif ne fonctionne qu'à partir de la racine :

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

Je voulais juste confirmer que vous pouvez utiliser @Url.Content pour fournir le chemin absolu :

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

12voto

Tim Points 2036

Peut-être qu'il vaut mieux créer une ancre avec l'URL DeleteJob au lieu du bouton ?

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

et utilisez votre javascript que vous avez déjà écrit :

 function DeleteJob() {

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

Donc, si la fonction renvoie true, vous serez redirigé. Si la fonction renvoie false, vous restez toujours sur la page.

8voto

Chris M. Points 560

Utilisez le @Url.Action method . Cela fonctionnera et déterminera l'itinéraire correct quel que soit le serveur IIS sur lequel vous déployez.

Exemple-

 window.location.href="@Url.Action("Action", "Controller")";

donc dans le cas de l' action Index sur le contrôleur Home -

 window.location.href="@Url.Action("Index", "Home")";

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X