【发布时间】:2017-11-02 18:05:40
【问题描述】:
我有一个 ASP.NET Core Web 应用程序。我的一些调用(例如删除)我更喜欢使用纯 ajax 请求而不是使用实际的 MVC 表单和回发。我的控制器既有返回视图的操作,也有像下面的 delete 方法这样的操作,它们更像是一个 API。
使用下面的核心,我成功地进入了操作,但 id 参数始终为空。我做错了什么?
MVC 控制器:
// POST: Users/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Delete([FromBody] string id)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var user = await _userManager.FindByIdAsync(id);
if (user == null)
{
return NotFound();
}
await _userManager.DeleteAsync(user);
return Ok(user);
}
AJAX 请求:
$.ajax({
url: '@Url.Action("Delete", "Projects")',
contentType: "application/json",
type: "POST",
headers:
{
"RequestVerificationToken": '@GetAntiXsrfRequestToken()'
},
data: JSON.stringify({ "id": "ABC123" }),
success: function () {
alert('Deleted Successfully');
// Remove row from grid.
}
});
在 ASP.NET MVC Web 应用程序中创建返回视图的操作和更像 API 调用的 AJAX 请求的操作是否很常见?我不认为它是 API 调用,因为我仍然想传递 AntiForgeryToken。
【问题讨论】:
-
如果您使用例如 Postman 进行发布请求,参数是否仍然是
null?只是尝试验证URL.Action()是否生成正确的 URL。
标签: c# asp.net ajax asp.net-core asp.net-core-mvc