Как вызвать метод POST в .NET CORE MVC напрямую из Razor View? - PullRequest
0 голосов
/ 19 сентября 2019

Я хочу вызвать свой метод из контроллера:

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

из моего представления Index.cshtml с помощью кнопки

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

как я могу это сделать?

Ответы [ 3 ]

1 голос
/ 20 сентября 2019

Ваш код должен быть

@page // important

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

И в вашем коде позади.

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

Я бы порекомендовал вам использовать страницу бритвы без смешивания с контроллером MVC

Выможете прочитать больше здесь

1 голос
/ 19 сентября 2019

Я неправильно прочитал вопрос и предположил, что в операции использовались страницы Razor.Вместо того, чтобы удалять ответ, который я написал для Razor Pages, я оставлю его на всякий случай, если он кому-нибудь поможет.

Razor Pages

Вам нужно обернуть свою кнопку внутритег <form>.Вы можете использовать некоторые встроенные .net основные помощники тегов , чтобы указать, какой метод вы хотите вызвать после отправки формы.Убедитесь, что ваша кнопка имеет type="submit".Это говорит форме, что всякий раз, когда на нее нажимают, отправьте запрос на отправку этому обработчику.

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

MVC

Заменить asp-page-handler на asp-action.

<form asp-action="SendPhoneVerificationCode" method="post">
    <button type="submit" name="button">Send Verification Phone Code</button>
</form>
0 голосов
/ 20 сентября 2019

Вы можете использовать тег helper в ASP.Net Core MVC:

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

Ссылка: https://docs.microsoft.com/en-us/aspnet/core/mvc/views/working-with-forms?view=aspnetcore-2.2

Вы также можете использовать ajax для вызова метода, как показано ниже:

<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>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...