ASP.NET MVC控制器上的400个错误请求

时间:2016-06-09 05:40:46

标签: c# json asp.net-mvc

想知道是否有人能看到我能看到的东西。该网站给我一个错误"http://localhost:XXXXX/Sales/Edit/[insert ID here]回复状态为400(错误请求)"

这是我的控制人员:

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Edit([Bind(Include = "")] Sale sale)
{
     // Retrieve Part Number
     Product product = await RetrieveProductUsingPartNumber(filter["ProductPartNumber"]);
     // Validate Part Number
     if (ValidateProduct(product)) s.ProductId = product.Id;

     if (ModelState.IsValid)
     {
          salesRepository.Update(s);
          await salesRepository.SaveAsync();
          return Json(new SaleDtoWeb()
          {
               ProductPartNumber = s.Product.PartNumber
          });
      }
      // Set response to error
      Response.StatusCode = 400;

      // Retrieve error messages
      List<string> errors = RetrieveErrorMessages();

      return Json(new { messages = errors });
 }

这是我的帖子

updateItem: function (item) {

 return $.ajax({
     type: "POST",
     url: "Sales/Edit/" + item.Id,
     data: AddAntiForgeryToken(item),
     dataType: "json",
     success: function (data) {
          // Show Success message
          showAlert('.alert-success', 'Successfully edited item');
          // Hide Error alert
          $('.alert-danger').hide();
     },
     error: function (data) {
          var messages = JSON.parse(data.responseText);
          // Format messages from server
          var errorMessages = formatErrorMessages(messages['messages']);
          // Show Error messages
          showAlert('.alert-danger', errorMessages);
          // Hide Success alert
          $('.alert-success').hide();
      }
   });
 }

编辑:我已将参数/方法签名添加到控制器。请注意,我没有添加绑定项目,因为我想专注于另一个模型/表格上的PartNumber

2 个答案:

答案 0 :(得分:0)

尝试添加:

Response.TrySkipIisCustomErrors = true;

答案 1 :(得分:0)

看起来你的ModelState不是有效的。控制器方法签名是什么样的?它与AddAntiForgeryToken(item)传递的内容是否匹配? 错误消息数组告诉您什么?