本文介绍了用js发布到api(asp.net core mvc)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,我将DTO用于单个值(Id)&尝试使用ApiController发布到Db,但是在单击按钮时,我不断收到错误400,该错误将我引向xhr.send错误.(即使用asp.net core 2.1)代码 :@section脚本{

Hello im using a DTO for a single value(Id) & trying to post to Db using ApiController but on button click I keep getting error 400 that is referring me to xhr.send error.(im using asp.net core 2.1 )Code :@section Scripts{

 <script type="text/javascript">
        $(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");
                            });
                    });
            });
    </script>

}& ApiController代码

}& the ApiController code

    [Microsoft.AspNetCore.Mvc.Route("api/[controller]")]
[ApiController]
[Microsoft.AspNetCore.Authorization.Authorize]
public class HandShakeController : ControllerBase
{
    private readonly ApplicationDbContext _context;
    private readonly UserManager<IdentityUser> _userManager;
  //  private readonly IHostingEnvironment hostingEnvironment;

    public HandShakeController(ApplicationDbContext context ,UserManager<IdentityUser> 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,
    }
}

im使用asp.net core 2.1&强烈怀疑问题出在ApiController中,但我不确定.

im using asp.net core 2.1 & strongly suspect that the problem is in the ApiController but im not sure.

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") })

Try replacing $.post("/Api/Hand/", { QuettaOfferId: button.attr("data-QuettaOfferId") })By $.post("/Api/HandShake/", { QuettaOfferId: button.attr("data-QuettaOfferId") })

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

as your api controller name is HandShakeController

这篇关于用js发布到api(asp.net core mvc)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-03 10:34