Почему сервисный стек не смог выполнить привязку модели к почтовому запросу json?
-
12-12-2019 - |
Вопрос
$.ajax({
type: 'POST',
url: "/api/student",
data:'{"x":3,"y":2}',
dataType: "json",
complete: function (r, s) {
debugger;
},
success: function(response){
debugger;
},
contentType: "application/json" // !!!!!!!!!!!! The reason of problem. I could see Json on firebug. It was false-positive for my code !
});
Я отслеживал поток через Firebug.Firebug распознал и показал объект JSON.
Этот код обращался к методу OnPost RestServiceBase. Но привязка модели не работала.Должны ли имена свойств быть точно такими же в объекте Json и классе C#?
Или я что-то упускаю?(Да, ты чего-то упускаешь!)
PS: Надеюсь, я изменил URL на «/api/student/json/asynconeway», но потом получил ошибку 404.
Решение 3
Я должен добавить
DataType: «Приложение / JSON» Свойство Ajax Project!
Другие советы
СервисСтек делает модель привязывает JSON POST (а также любой из поддерживаемых типов контента, включая x-www-form-urlencoded).
Есть много примеров в СервисСтек.Примеры это делает это.
Этот код обращался к методу Onpost RestServiceBase. Но привязка модели не сработала.
Вы не указали, к какому DTO вы пытаетесь привязаться.Но этот JSON
{"x":3,"y":2}
Будет сопоставляться с соответствующим DTO, например:
public class Student {
public int X { get; set; }
public int Y { get; set; }
}
Должны ли имена свойств быть точно такими же в объекте Json и классе C#?
Конечно, они должны совпадать по именам, но не чувствительны к регистру, см. выше.
PS: я изменил URL на "/API/Student/JSON/Asynconeway"
Это не верно.Если вы пытаетесь использовать автоматический заранее заданный маршрут, правильный URL:
/api/json/asynconeway/student
Предполагая, что ваш Запросить DTO называется Student
.
Вот какой-то мой код:
$.ajax({
type: "POST",
url: "/artist/delete",
data: { id: itemId },
success: function () {
$("div#" + itemId).fadeOut(function () { $(this).remove(); });
}
});
.
Редактировать: Извините, я ошибаюсь, что вы хотели там, поэтому я задам вам вопрос, почему вы отправляете JSON на сервер, где вы можете сделать такую функцию:
.
[HttpPost]
public ActionResult Delete(int id)
{
var artist = _db.Artists.Where(x => x.ID == id).SingleOrDefault();
if (artist == null)
{
return Content("false");
}
else
{
_db.Artists.DeleteOnSubmit(artist);
_db.SubmitChanges();
return RedirectToAction("Post");
}
}
data:'{"x":3,"y":2)}',
.
edit3: Другой синтаксис ошибки
.
}
}
});
в конце кода.