Почему сервисный стек не смог выполнить привязку модели к почтовому запросу json?

StackOverflow https://stackoverflow.com//questions/11678610

  •  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");
            }
        }
.

EDIT2: и у вас есть синтаксическая ошибка здесь data:'{"x":3,"y":2)}',.

edit3: Другой синтаксис ошибки

        }
        }
    });
.

в конце кода.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top