AJAX 对 Class 文件中包含的方法的请求

AJAX Request to Method Contained in Class File

我正在尝试在 Razor 页面上发出 AJAX 请求,调用包含在单独 class 文件中的方法(不在页面的页面模型中 - 因为我最终想要来自多个不同页面的相同请求)。

很遗憾,请求失败。我认为这可能与我使用的语法有关,或者可能与我试图调用的 class 属于错误类型有关。请注意,如果我将 url 更改为页面模型中的方法(无需其他更改),请求确实有效。

我对 ASP.NET Core Razor 页面和 AJAX 请求还很陌生,所以如果这里有根本性的误解,请告诉我。

AJAX 请求代码 (jQuery):

$(document).ready(function () {
    $.ajax({
        dataType: 'json',
        url: '/Tools/Redirect?handler=AccessRedirect',
        type: 'GET',
        success: function (data) {
            alert("Request Success, Data = " + data);
        },
        error: function () {
            alert("Request Failed");
        }
    });
})

(我也尝试过 url: /Tools/Redirect/AccessRedirect 使用简单地称为 AccessRedirect 的方法,使用 [HttpGet] 属性,但这也不起作用)

C# Class 代码(文件在 Redirect.cs 文件夹中):

    public class Redirect
    {
        public JsonResult OnGetAccessRedirect()
        {
            return new JsonResult("test");
        }
    }

非常感谢任何帮助。谢谢。

您的根本误解是 Razor Pages 请求必须以 PageModel class 中的处理程序方法为目标。您不能将 URL 映射到 class 文件中的任意方法。处理程序方法必须在派生自 PageModel 的 class 中,并且它们必须遵循某些约定。

您可以在此处阅读有关 Razor Pages 中的处理程序方法的更多信息:https://www.learnrazorpages.com/razor-pages/handler-methods

如果您有想要集中的代码,可以将其放入 C# class,然后在您的处理程序方法中调用该方法