Razor Pages использует для этого обработчики страниц. Поэтому, если вы хотите разместить POST на своей странице, создайте метод с именем OnPost{HandlerName}
или OnPost{HandlerName}Async
, если это асинхронный метод.
Как пример, если у вас есть форма и вы хотите что-то удалить, вам понадобится обработчик страницы, подобный этому:
public async Task<IActionResult> OnPostDeleteAsync(int id)
{
var itemToDelete = await _mapRepo.GetByIdAsync(id);
if (itemToDelete == null)
{
//...
}
await _mapRepo.Delete(itemToDelete);
return RedirectToPage("Maps");
}
OnPost
заявляет, что ядро asp.net будет прослушивать POST-запрос, Delete
- это имя, а Async
- соглашение об именах для асинхронных обработчиков.
В вашей форме вы просто объявите элемент ввода, который будет вызывать этот обработчик во время события onclick:
<button type="submit" class="btn btn-danger btn-block" asp-page-handler="Delete" asp-route-id="@Model.Id">Delete</button>
Делаем это с помощью ajax:
$.ajax
({
type: "POST",
url: "/builder?handler=HelloFunc",
dataType: "text",
success: function (result) {
alert(result);
},
error: function (status, ex) {
alert("Error Code: Status: " + status + " Ex: " + ex);
}
});
С помощью метода обработчика:
public void OnPostHelloFunc()
{
//...
}
Вот хорошее прочтение именованных обработчиков: https://www.learnrazorpages.com/razor-pages/handler-methods