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?
3 Réponses :
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>
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?
code > est-ce la bonne façon d'appeler la méthode GET? Ou c'est du piratage? :RÉ
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
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>
si ma réponse fonctionne pour vous, votez et marquez-la comme acceptée. Merci