【发布时间】:2018-11-08 05:54:15
【问题描述】:
我目前正在制作一个在谷歌地图上显示位置的网站。我从 Airtable.com 数据库中获取位置地址,并且一切正常。然而,因为谷歌只允许一定数量的地址地理编码请求,我想将坐标保存在同一个数据库中,所以我只在需要查找新位置(地址)时使用地理编码 api。我已经完成了所有设置,但我似乎无法弄清楚如何在剃刀页面中从 js 调用 cs 方法。我过去使用过 WebMethod,但我显然不能在这里使用它。
当我尝试使用我在网上找到的示例时,它说我需要 RequestVerificationToken,但这需要来自表单内的调用(对吗?),并且在网站加载时提示我的 ajax 调用和它从数据库中获取一个还没有任何坐标的位置。
这是我第一次使用 Razor Pages,如果我完全误解了某些内容,请多多包涵。
我想调用的cs方法的图片(Index.cshtml.cs) I tried with the httpPost tag, but it didn't make a difference
[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);
})
}
我知道有些代码并不完全是我需要的,但我只是从网上复制的,当我超过这个障碍时会编辑。
【问题讨论】:
-
在minimal reproducible example 中显示更多 PageModel。我还建议参考Introduction to Razor Pages in ASP.NET Core
-
据我所知,XSRF/CSRF 存在问题,具体取决于配置,我认为您需要在 ajax 调用中添加标头
标签: c# ajax asp.net-core razor-pages