.NET CORE Razor Pages对C#方法的Ajax调用

尼古拉·赫丁·奥尔森

我目前正在建立一个网站,以在Google地图上显示位置。我从Airtable.com数据库中获得了位置地址,并且一切正常。但是,由于google只允许对地理地址进行一定数量的请求,因此我想将坐标保存在同一数据库中,因此我仅在需要查找新位置(地址)时才使用地理编码api。我已经完成所有设置,但是我似乎无法弄清楚如何在剃刀页面中从js调用cs方法。我过去曾经使用过WebMethod,但显然不能在这里使用它。

当我尝试使用在网上找到的示例时,它说我需要RequestVerificationToken,但这需要调用来自表单内的内容(对吗?),并且在网站加载时提示我的ajax调用,并且它得到一个数据库中还没有任何坐标的位置。

这是我第一次使用Razor Pages,所以如果我完全误解了一些内容,请多多包涵。

我想调用的CS方法的图片(Index.cshtml.cs)我尝试使用httpPost标记,但是没有什么区别

    [HttpPost] // RequestVerificationToken
    public void OnPostGeoLocation()
    {
        // Just to test that it actually gets called
        Console.WriteLine("OnPostGeoLocation CALLED ####################################");
        Console.WriteLine("OnPostGeoLocation CALLED ####################################");
        Console.WriteLine("OnPostGeoLocation CALLED ####################################");
        Console.WriteLine("OnPostGeoLocation CALLED ####################################");
    }

来自JavaScript的Ajax调用的图片,基本上是在页面加载时调用的:AjaxCall

function updateRow(recordID, latLng) {
   console.log("REC_ID: " + recordID);
   console.log("LatLng: " + latLng);
   $.ajax({
       type: "POST",
       url: '/Index?OnPostGeoLocation', 
       contentType: "application/json; charset=utf-8",
       dataType: "json"
   }).done(function (data) {
       console.log(data.result);
   })
 }

我知道有些代码不是我真正需要的,但我只是从网上复制而来,将在我遇到此障碍时进行编辑。

恩科西

尝试返回正确的IActionResult结果。

[HttpPost]
public IActionResult OnPostGeoLocation() {
    // Just to test that it actually gets called
    Console.WriteLine("OnPostGeoLocation CALLED ####################################");

    return new JsonResult("OnPostGeoLocation CALLED ####################################");
}

接下来,在进行呼叫时,需要调用正确的处理程序路径并包括防伪令牌,因为Razor Pages被设计为可以自动防御跨站点请求伪造(CSRF / XSRF)攻击。

更新了Ajax调用

function updateRow(recordID, latLng) {
    console.log("REC_ID: " + recordID);
    console.log("LatLng: " + latLng);
    $.ajax({
        type: "POST",
        url: '/Index?handler=GeoLocation', 
        beforeSend: function (xhr) {
            xhr.setRequestHeader("XSRF-TOKEN",
                $('input:hidden[name="__RequestVerificationToken"]').val());
        },
        contentType: "application/json; charset=utf-8",
        dataType: "json"
    }).done(function (data) {
        console.log(data.result);
    })
}

很有帮助的文章供参考

处理ASP.NET Core Razor页面中的Ajax请求

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 .NET Core Razor Pages 中从 JQuery Ajax 调用 C# 方法

.NET Core Razor C#函数

c# net core 3.1 razor pages 如何使用image类

如何为 Razor Pages (.NET Core) 绑定视图模型?

ASP.NET Core Razor Pages按钮不起作用

ASP net Core Razor Pages - EF 和视图的拆分模型

Razor Pages Asp.Net-Core安装FullCalendar

.Net Core 3.1 Razor Pages:自动重定向到文化

带参数的 ASP.Net Core 2 Razor AJAX GET?

示例AJAX回调到ASP.NET Core Razor页面

ASP.NET Core 3.1 Razor Pages Web App:使用 Ajax 调用后,Razor 页面表单数据被删除的原因是什么?

.NET Core Razor中的共享数据和共享方法

ASP.NET Core Razor Pages 中的 return Page() 在通过 RedirectToPage 调用后不呈现页面

使用AJAX Get的.NET Core Razor Pages可以填充引导模态中的数据

C# ASP.net Razor AJAX 调用方法不起作用

.NET Core从Razor页面到控制器进行AJAX调用

ASP.NET Core 2.2 Razor 页面 - 对页面模型的 AJAX 调用不返回数据

DisplayFormat ApplyFormatInEditMode 不按预期工作 - .NET Core Razor Pages EF Core

ASP .NET Core Razor页面中的授权

Razor / .Net Core中的引导选择属性

上载asp.net core 3.1 Razor

所有视图中均具有单个.NET Core Razor C#函数

Asp.Net Core 3.1 Cookie未附加Razor页面C#

重命名ASP.NET Core Razor Pages中的Pages / Shared目录

如何在Razor Pages ASP.NET Core中的布局内访问HostingEnvironment?

ASP.Net Core Razor Pages应用程序未绑定到模型中的属性

ASP.Net Core 3.1 Razor Pages 事件处理程序在生产中不起作用

如何在 Razor pages .Net core 项目中访问 html 文件

为什么推荐使用Razor Pages在Asp.net Core中创建Web UI?