Я пытаюсь сохранить изменения, используя сообщение Ajax.Я, кажется, поражаю событие сбоя метода Ajax еще до того, как выполняется метод контроллера.Я хочу вернуть «0» или «1» в случае успеха или любое другое сообщение об ошибке в виде строки моего метода Ajax.Что мне здесь не хватает?Ниже приведены фрагменты моего контроллера и методы публикации Ajax.
Assets.Launch = {
ProductService: function ($stockItemId, $stockItemName, successCallback, failureCallback) {
var data = {
"stockItemId": $stockItemId,
"stockItemName": $stockItemName
};
$.ajax({
url: "/Purchasing/AddEditProductService",
type: "POST",
data: data
})
.done(function (result) {
if (result === "0") {
successCallback($stockItemName + " Successfully added");
}
else if (result === "1") {
successCallback($stockItemName + " Successfully updated");
}
else {
failureCallback(result);
}
})
.fail(function (jqxhr, textStatus, errorThrown) {
failureCallback(errorThrown);
});
}
};
public JsonResult AddEditProductService(int? stockItemId, string stockItemName)
{
string errorToReport = "";
bool isDuplicate = false;
bool isAdding = (stockItemId == 0);
StockItems entity;
using (var ctx = iuow)
{
if (isAdding)
{
entity = new StockItems();
}
else
{
entity = ctx.StockItems.Find(e => e.StockItemId == stockItemId).FirstOrDefault();
}
................
try
{
if (isAdding)
{
ctx.StockItems.Add(entity);
ctx.SaveChanges();
return Json("0");
}
else
{
ctx.StockItems.Update(entity);
ctx.SaveChanges();
return Json("1");
}
}
catch (DbUpdateException ex)
{
if (ex.InnerException != null)
{
var sqlException = ex.InnerException as SqlException;
isDuplicate = IsDuplicate(sqlException);
if (isDuplicate)
{
errorToReport = "Cannot insert duplicate key [" + stockItemName + "]";
}
else
{
errorToReport = sqlException.Message;
}
}
return Json(errorToReport);
}
catch (Exception exception)
{
errorToReport = (exception.InnerException == null) ? exception.Message : exception.InnerException.Message;
_logger.LogError(errorToReport);
return Json(errorToReport);
}
}
}