I've found examples of have multiple handlers on a page and the associated naming convention (ie OnPostXXX) and 'asp-post-hanlder' tag helper. But how can I call one of these methods from an AJAX call.
I have an older example with a typical MVC view and controller but how does this work with a Razor Page?
For example if I take the base application and modify the About.cshtml page to the following:
@page @model AboutModel @{ ViewData["Title"] = "About"; } <h2>@ViewData["Title"]</h2> <h3>@Model.Message</h3> <input type="button" value="Ajax test" class="btn btn-default" onclick="ajaxTest();" /> @section Scripts { <script type="text/javascript"> function ajaxTest() { console.log("Entered method"); $.ajax({ type: "POST", url: '/About', // <-- Where should this point? contentType: "application/json; charset=utf-8", dataType: "json", error: function (xhr, status, errorThrown) { var err = "Status: " + status + " " + errorThrown; console.log(err); } }).done(function (data) { console.log(data.result); }) } </script> }
And on the model page About.cshtml.cs
public class AboutModel : PageModel { public string Message { get; set; } public void OnGet() { Message = "Your application description page."; } public IActionResult OnPost() { //throw new Exception("stop"); return new JsonResult(""); } }
The OnPost is not called from the Ajax call.