gpt4 book ai didi

c# - 无法使用 ajax 将数据传递到 Razor 页面

转载 作者:太空宇宙 更新时间:2023-11-03 20:58:48 26 4
gpt4 key购买 nike

我正在尝试将一些数据发送到 razor page 方法,但问题是在方法中它始终采用 0

代码如下:

Razor 页面:

public IActionResult OnGetProducts(int page)
{
var products = _productRepository.GetProducts();

decimal pagesInDecimal = (products.Count() / 18);
var totalPages = pagesInDecimal % 1 == 0 ? pagesInDecimal : pagesInDecimal + 1;

products = products.Skip((page - 1) * 20).Take(20);

return new JsonResult(new {
totalPages = totalPages,
products = products
});
}

Ajax :

getProducts(1);            
function getProducts(page) {
$.ajax({
type: 'GET',
url: "/Products",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: {
page: page,
handler: 'Products'
},
beforeSend: function (xhr) {
xhr.setRequestHeader("XSRF-TOKEN",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
success: function (datas) {
console.log(datas);
}
});
}

最佳答案

page本质上是使用 ASP.NET Core 2.0 Razor Pages 时的保留名称。您遇到的问题实际上很简单,但也很微妙:

当它看到查询字符串参数时,ASP.NET Core 2.0 Razor Pages 框架将其解释为当前 Razor 页面的名称 - 如果您更改 page,您会看到要键入的参数 string ;它实际上包含当前页面的名称。在您的情况下,因为类型是 int ,模型绑定(bind)过程无法将字符串(名称)绑定(bind)到数字,因此将其设置为 0 .

解决此问题的一种方法是使用不同的名称。例如:

public IActionResult OnGetProducts(int pageNumber)

-和-

data: {
pageNumber: page,
handler: 'Products'
}

围绕这个问题在 Github 上有很多讨论。 ,但它并不特定于您的场景。我建议您搜索或提出一个专门讨论在 Razor 页面中使用查询字符串参数的新问题。

作为一个不相关的旁注,您不需要设置 Content-Type在你的 $.ajax 中 header 请求 - 这在您发送内容时使用,但您没有发送内容。

关于c# - 无法使用 ajax 将数据传递到 Razor 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47848183/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com