Jquery 将razor页面中ajax帖子的目标从controller中的api更改为;“代码隐藏”;在同一页面中发布处理程序
我在index.cshtml razor页面上发布了以下ajax帖子,效果很好:Jquery 将razor页面中ajax帖子的目标从controller中的api更改为;“代码隐藏”;在同一页面中发布处理程序,jquery,asp.net-core,razor-pages,Jquery,Asp.net Core,Razor Pages,我在index.cshtml razor页面上发布了以下ajax帖子,效果很好: create: { url: "/api/LearningTasks/create", type: "POST", dataType: "json" }, 它将帖子发送给我的控制器,代码接收工作正常。看起来是这样的: [HttpPost] [Route("api/LearningTasks/create")]
create: {
url: "/api/LearningTasks/create",
type: "POST",
dataType: "json"
},
它将帖子发送给我的控制器,代码接收工作正常。看起来是这样的:
[HttpPost]
[Route("api/LearningTasks/create")]
public async Task<ActionResult<LearningTask>> CreateLearningTask(LearningTask learningTask)
{
_context.LearningTasks.Add(learningTask);
await _context.SaveChangesAsync();
return CreatedAtAction("GetLearningTask", new { id = learningTask.Id }, learningTask);
}
public async Task<IActionResult> OnPostAsync()
{
// This is where I want to have the send the data for the create operation instead of to /api/LearningTasks/create
_context.LearningTasks.Add(LearningTask);
await _context.SaveChangesAsync();
return null;
}
[HttpPost]
[路线(“api/LearningTasks/create”)]
公共异步任务CreateLearningTask(LearningTask LearningTask)
{
_context.LearningTasks.Add(learningTask);
wait_context.SaveChangesAsync();
返回CreateDataAction(“GetLearningTask”,new{id=learningTask.id},learningTask);
}
我想更改我文章的目标,使其转到“代码隐藏”index.cshtml.cs。我希望接收的方法如下所示:
[HttpPost]
[Route("api/LearningTasks/create")]
public async Task<ActionResult<LearningTask>> CreateLearningTask(LearningTask learningTask)
{
_context.LearningTasks.Add(learningTask);
await _context.SaveChangesAsync();
return CreatedAtAction("GetLearningTask", new { id = learningTask.Id }, learningTask);
}
public async Task<IActionResult> OnPostAsync()
{
// This is where I want to have the send the data for the create operation instead of to /api/LearningTasks/create
_context.LearningTasks.Add(LearningTask);
await _context.SaveChangesAsync();
return null;
}
公共异步任务OnPostAsync()
{
//在这里,我希望将创建操作的数据发送到/api/LearningTasks/create
_context.LearningTasks.Add(LearningTask);
wait_context.SaveChangesAsync();
返回null;
}
我曾尝试删除行
url:“/api/LearningTasks/create”
,并将其设置为url:”,
,但都不起作用。如果您能帮助我们了解如何做到这一点,我们将不胜感激。Razor页面的设计旨在自动防止跨站点请求伪造(CSRF/XSRF)攻击
您应该使用AJAX将请求头中的防伪令牌发送到服务器:
@Html.AntiForgeryToken()
显式添加,它将添加一个名为\uu RequestVerificationToken
的隐藏输入类型$.ajax({
url: '/Index',
type: 'POST',
beforeSend: function (xhr) {
xhr.setRequestHeader("XSRF-TOKEN",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
})
.done(function (result) { })
services.AddAntiforgery(o => o.HeaderName = "XSRF-TOKEN");