用js发布到api(asp.net core mvc)

您好我使用DTO作为单个值(Id)并尝试使用ApiController发布到Db但是在按钮单击时我不断收到错误400,这是指xhr.send错误。 (即时通讯使用asp.net核心2.1)代码:@section Scripts {

 $(document) .ready(function() { $(".js-toggle-HandShake") .click(function(e) { var button = $(e.target); console.log(button.attr("data-QuettaOfferId")); //Value=24 >> OK $.post("/Api/HandShake/", { QuettaOfferId: button.attr("data-QuettaOfferId") }) // Error in > POST https://localhost:44339/Api/HandShake/ 400 () & //in jquery>> xhr.send( options.hasContent && options.data || null ); .done(function() { button .text("Chousen"); }) .fail(function() { alert("Something failed"); }); }); });  

和ApiController代码

  [Microsoft.AspNetCore.Mvc.Route("api/[controller]")] [ApiController] [Microsoft.AspNetCore.Authorization.Authorize] public class HandShakeController : ControllerBase { private readonly ApplicationDbContext _context; private readonly UserManager _userManager; // private readonly IHostingEnvironment hostingEnvironment; public HandShakeController(ApplicationDbContext context ,UserManager userManager/*, IHostingEnvironment environment*/) { _context = context; _userManager = userManager; //hostingEnvironment = environment; } [Microsoft.AspNetCore.Mvc.HttpPost] // public IHttpActionResult HandShakes(HandShakeDto dto) public IActionResult HandShakes(HandShakeDto dto) { var userId = _userManager.GetUserId(User); var check = _context.Quetta.Where(u => u.SiteUserId == userId); if ( _context.handShakes.Any(f => f.QuettaOfferId == dto.QuettaOfferId)) return BadRequest("Some error Msg"); if (check.Any()) { var hand = new HandShake { QuettaOfferId = dto.QuettaOfferId }; try { _context.handShakes.Add(hand); _context.SaveChangesAsync(); return Ok(); } catch (Exception e) { Console.WriteLine(e); return BadRequest("Some error Msg"); } } else{ return BadRequest("");} // Check if the user id that publish the ed = login user. //if so add the offer to selected table, } } 

即时通讯使用asp.net核心2.1并强烈怀疑问题是在ApiController但我不确定。

DTO

  public class HandShakeDto { public int QuettaOfferId { get; set; } } 

尝试替换$.post("/Api/Hand/", { QuettaOfferId: button.attr("data-QuettaOfferId") }) $.post("/Api/HandShake/", { QuettaOfferId: button.attr("data-QuettaOfferId") })

因为你的api控制器名称是HandShakeController