1
votes

Comment appeler la méthode POST dans .NET CORE MVC directement à partir de Razor View?

Je souhaite appeler ma méthode depuis le contrôleur:

<button class="btn btn-primary" name="button">Send Verification Phone Code</button>

depuis ma vue Index.cshtml en utilisant le bouton

[HttpPost]
public async Task<IActionResult> SendPhoneVerificationCode() 
{
  // ...code
    return RedirectToAction(nameof(ConfirmPhoneNumber));
}

comment faire ceci?


1 commentaires

si ma réponse fonctionne pour vous, votez et marquez-la comme acceptée. Merci


3 Réponses :


1
votes

J'ai mal lu la question et je suis parti du principe que l'op utilisait des pages Razor. Au lieu de supprimer la réponse que j'ai publiée pour Razor Pages, je la laisserai au cas où cela aiderait quelqu'un.

Razor Pages

Vous devez insérer votre bouton dans un Balise

. Vous pouvez utiliser des éléments intégrés .net core tag helpers pour spécifier la méthode à appeler une fois le formulaire envoyé. Assurez-vous que votre bouton a le type = "soumettre" . Cela indique au formulaire que chaque fois qu'il clique, continuez et faites une demande de publication à ce gestionnaire.

<form asp-action="SendPhoneVerificationCode" method="post">
    <button type="submit" name="button">Send Verification Phone Code</button>
</form>

Remplacer asp-page-handler par asp-action .

<form asp-page-handler="SendPhoneVerificationCode" method="post">
    <button type="submit" name="button">Send Verification Phone Code</button>
</form>


4 commentaires

Cela me redirige vers la page: https: // localhost: 5000 / Manage / Index? Handler = SendPhoneVerific‌ ationCode


@DiPix Désolé. Je vous ai mal compris et j'ai supposé que vous utilisiez des pages Razor. J'ai mis à jour ma réponse. Voyez si cela fonctionne.


C'était mon erreur, je n'avais pas réalisé que MVC! = Razor Pages;) Encore une question, comment puis-je y passer des valeurs ou même des objets? Est-il possible?


est-ce la bonne façon d'appeler la méthode GET? Ou c'est du piratage? :RÉ



1
votes

Votre code doit être

public IActionResult SendPhoneVerificationCode() 
{
   return RedirectToPage("./ConfirmPhoneNumber");
}

Et dans votre code derrière.

@page // important

<form method="POST">
   <input type="submit" asp-page-handler="SendPhoneVerificationCode" value="Submit" />
</form>

Je vous recommanderais d'utiliser la page rasoir sans mélanger avec mvc contrôleur

Vous pouvez en savoir plus ici


0 commentaires

1
votes

Vous pouvez utiliser l'assistant de balise dans ASP.Net Core MVC:

<button class="btn btn-primary" onclick="post()" name="button">Send Verification Phone Code</button>

@section Scripts{ 
<script>
    function post() {
        $.ajax({
            type: "POST",
            url: "/ABC/SendPhoneVerificationCode",
            success: function (data) {
                window.location.href = "/ABC/ConfirmPhoneNumber"
    }
        })        
    }
</script>
}

Référence: https://docs.microsoft.com/en-us/aspnet/core/mvc/views/working-with- forms? view = aspnetcore-2.2

Vous pouvez également utiliser ajax pour appeler la méthode comme ci-dessous:

<form asp-action="SendPhoneVerificationCode" asp-controller="YourControllerName">
    <button class="btn btn-primary" name="button">Send Verification Phone Code</button>
</form>


0 commentaires