Вы отправляете данные неправильно.
Код указывает JSON, но отправляет только одну строку.Если вы проверяете ItemModel
, я уверен, что он будет содержать строковые данные, отправленные клиентом.
Создайте объект JavaScript, а затем зафиксируйте его как тело запроса.
var payload = { ItemModel: 'ttt1', ItemName: 'ttt2' }; //<-- create object
$.ajax({
type: "POST",
url: "../Home/AddItem",
data: JSON.stringify(payload), //<-- properly format for request
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
console.log(JSON.stringify(data));
if (data.Success == "Success") {
alert("Item has been added.");
} else {
alert("We were not able to create the offer");
}
},
error: function (exception) {
console.log(exception);
}
});
Связыватель модели должен затем иметь возможность различать нужные параметры.
В идеале, когда ожидаются данные в теле запроса, лучше использовать модель
public class Item {
public string ItemModel { get; set; }
public string ItemName { get; set; }
}
и выполнить действиеявно ищите его в теле запроса, используя атрибут FromBody
[HttpPost]
public JsonResult AddItem([FromBody]Item item) {
if(ModelState.IsValid) {
try {
var sql = @"INSERT INTO ITEMS(iModel, iName) VALUES ({0}, {1})";
_DB.Database.ExecuteSqlCommand(sql, item.ItemModel, item.ItemName);
return Json(new { Success = "Success" });
} catch (Exception ex) {
throw ex;
}
}
return Json(new { Success = "BadRequest" });
}