【问题标题】:When button is clicked, the database is updated单击按钮时,数据库将更新
【发布时间】:2020-06-28 22:14:10
【问题描述】:

我有这个界面

当点击其中一个按钮时,它会更新数据库。例如,我有一个名为“Estado”的变量,默认情况下是“emAvaliacao”,但是当按下“Aceite”按钮时,“Estado”会变为“Aceite”。

以下是我使用的函数:

    function atualizaBD(idmarcador, novoEstado) {
    $.ajax
        ({
            url: `/api/IgnicoesAPI/${idmarcador}`,
            type: 'PUT',
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify({
                Id: +idmarcador,
                Estado: novoEstado
            }),
            success: function (result) {
                 connection.invoke("PostMarker").catch(function (err) {
                              return console.error(err.toString());
                 });
            },

            error: function () {
                alert("ocorreu um erro!")
            }
        });
}

这里是 PUT 函数:

    [HttpPut("{id}")]
    public async Task<IActionResult> PutIgnicoes([FromRoute] int id, [FromBody] Ignicoes ignicao)
    {
        
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }


        if (id != ignicao.Id)
        {
            return BadRequest();
        }


        var dataDecisao = DateTime.Now;
        var ig = _context.Ignicoes.FirstOrDefault (ignicaoId => ignicaoId.Id.Equals(id));
        if (ig != null)
        {
            ig.Estado = ignicao.Estado;              
            ig.DataDecisaoIgnicao = dataDecisao;
        }
        try
        {
            await _context.SaveChangesAsync();
        }
        catch (DbUpdateConcurrencyException)
        {
            if (!IgnicoesExists(id))
            {
                return NotFound();
            }
            else
            {
                throw;
            }
        }

        return NoContent();
    }

现在它给了我一个错误 400,我不知道为什么或如何解决这个问题。有人可以帮我吗?

【问题讨论】:

  • 为什么Id: +idmarcador中有+
  • 应该将Id 大写(应该是id)? Javascript 区分大小写。

标签: javascript c# ajax asp.net-core


【解决方案1】:

尝试使用 Debug 来定位导致异常的特定行。

  1. url 您是否发布了指向您的操作PutIgnicoes 的路线?

    从邮政编码看不到正确的属性路线[HttpPut("~/api/IgnicoesAPI/{id}")]

  2. 检查您发布到操作的参数。

数据:JSON.stringify({ Id: +idmarcador, Estado: novoEstado }),

public async Task<IActionResult> PutIgnicoes([FromRoute] int id, [FromBody] Ignicoes ignicao)

【讨论】:

    【解决方案2】:

    错误 400 主要是由您的操作中的return BadRequest(); 引起的。您应该调试以查看有效负载并检查数据是否可以绑定到 Ignicoes 模型。

    如果还有问题。请展示使用Ignicoes 类和请求负载。

    【讨论】:

      猜你喜欢
      • 2016-06-11
      • 1970-01-01
      • 2014-01-17
      • 1970-01-01
      • 2018-02-14
      • 1970-01-01
      • 2019-01-26
      • 1970-01-01
      • 2022-01-19
      相关资源
      最近更新 更多