2016-06-09 2 views
-2

Было интересно, может ли кто-нибудь увидеть то, что я не вижу. Сайт дает мне ошибку в "http://localhost:XXXXX/Sales/Edit/[insert ID here] ответил со статусом 400 (Bad Request)»400 плохой запрос на ASP.NET MVC-контроллер

Вот мой контроллер:

[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 }); 
} 

Вот мой POST

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(); 
     } 
    }); 
} 

EDIT: Я добавили параметры/подпись метода в контроллер. Имейте в виду, что я не добавлял привязанные элементы, потому что я хочу сосредоточиться только на PartNumber, который находится на другой модели/таблице

+2

Можете ли вы показать параметр в контроллере действий? –

+0

, скорее всего, он не ударил утверждения внутри оператора if или условие if не удовлетворено – Sherlock

+0

Я добавил его! Я надеюсь, что это немного более понятно. –

ответ

0

попробуйте добавить:

Response.TrySkipIisCustomErrors = true; 
0

Похоже, что ваш ModelState недействителен. Как выглядит подпись метода контроллера? Соответствует ли это тому, что передает AddAntiForgeryToken (item)? Что сообщает массив сообщений об ошибках?

Смежные вопросы