【发布时间】:2019-05-05 15:56:52
【问题描述】:
我正在尝试在 Razor 页面上发出 AJAX 请求,调用包含在单独类文件中的方法(不在页面的页面模型中 - 因为我最终想从多个不同页面发出相同的请求)。
很遗憾,请求失败。我认为这可能与我使用的语法有关,或者可能与我试图调用的类的类型错误有关。请注意,如果我将 url 更改为 pagemodel 中的方法(无需其他更改),请求确实有效。
我对 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#类代码(文件为Tools文件夹中的Redirect.cs):
public class Redirect
{
public JsonResult OnGetAccessRedirect()
{
return new JsonResult("test");
}
}
非常感谢任何帮助。谢谢。
【问题讨论】:
-
1.你的
Redirect必须派生自Controller并且必须有RedirectController之类的后缀... 2. 你的路线是什么? -
JsonResult是否存在于页面的.cshtml.cs文件之外?我认为您不能将 JsonResult 放在页面代码文件之外,为什么不使用静态方法创建静态类并使用该方法返回JsonResult呢?注意:Razor 页面必须派生自PageModel而不是Controller。 -
您是否添加了防伪请求令牌?见stackoverflow.com/questions/46410716/…
标签: c# jquery ajax asp.net-core-mvc razor-pages