- 首先请确保在控制器中接收POST请求的方法使用了[HttpPost]特性。
- 如果模型无法传递,可能是因为在ASP.NET Core 6中默认启用了防止跨站点请求伪造(CSRF)保护,此时需要在每个请求的头部添加请求验证令牌(RequestVerificationToken)。可以使用@Html.AntiForgeryToken()方法为视图生成此令牌,然后在Ajax请求中将此令牌添加到请求头中。
- 此外,可能还需要在Startup文件的ConfigureServices方法中添加以下代码,以便在每个请求中使用AntiForgeryToken:
services.AddRazorPages().AddRazorPagesOptions(options =>
{
options.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute());
});
- 最后,确保Ajax请求的Content-Type设置正确。如果请求的Content-Type是错的,可能会导致模型无法传递到控制器。可以使用以下代码来设置Content-Type:
$.ajax({
url: "url",
type: "POST",
data: data,
contentType: "application/json;charset=utf-8",
dataType: "json",
success: function () {
// success message
},
error: function () {
// error message
}
});