Estoy familiarizado con los archivos tradicionales MyPage.cshtml y MyPage.cshtml.cs con los métodos OnGetAsync y OnPostAsync , pero ¿cómo agrego otro controlador a la página modelo que puedo llamar con javascript sin hacer una publicación de formulario completo?
using System.Collections.Generic; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.Antiforgery; using Microsoft.AspNetCore.Mvc; namespace MyApp.Pages; public class ListModel : PageModel { private readonly IAntiforgery _antiForgery; public AntiforgeryTokenSet AntiForgeryToken {get; private set;} public ListModel( IAntiforgery antiForgery ) { this._antiForgery = antiForgery; } public async Task OnGet() { AntiForgeryToken = _antiForgery.GetAndStoreTokens(HttpContext); } public async Task<JsonResult> OnPostWafflesAsync(bool test) { System.Console.WriteLine("Test approval result="+test); return new JsonResult(new { received = true, test, }); } } <script> const formData = new FormData(); formData.append('test', false); fetch( `${window.location}?handler=Waffles`, { method: "POST", headers: { RequestVerificationToken:`@Model.AntiForgeryToken.RequestToken`, }, body: formData, }); </script>En este caso, devolvemos un JsonResult para que javascript pueda consumirlo más fácilmente (pero este ejemplo no hace nada con el resultado).
Tenga en cuenta que el controlador al que se hace referencia en javascript es Waffles en lugar de OnPostWafflesAsync , relacionado
Referencias: