Было интересно, может ли кто-нибудь увидеть то, что я не вижу. Сайт дает мне ошибку в "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, который находится на другой модели/таблице
Можете ли вы показать параметр в контроллере действий? –
, скорее всего, он не ударил утверждения внутри оператора if или условие if не удовлетворено – Sherlock
Я добавил его! Я надеюсь, что это немного более понятно. –