Невозможно связать свойства из списка объектов при отправке запроса из браузера - PullRequest
0 голосов
/ 11 октября 2019

Я работаю над проектом на asp.net mvc2 и с jquery версии 1.7. Я хочу отправить список объектов на сервер и позволить компоновщику выполнить присвоение значений их свойствам, но на данный момент я не могу.

Моя структура классов выглядит следующим образом:

class Boo {
  public string Name {get; set;}
  public string Address {get; set;}
}

В браузере я отправляю этот запрос AJAX:

$.ajax({
  type: "POST",
  url: url,
  data: {destinataries: [{Name: "aa", Address: "bb"},{Name:"cc"}]
});

Однако на сервере я получаю список с двумя объектами, но все их свойства равны нулю во время исследованиядалее я заметил, что запрос, который отправляет jquery, выглядит неправильно:

Form Data:
destinataries[0][Name]: aa
destinataries[0][Address]: bb
destinataries[1][Name]: cc

При использовании Postman, если я отправляю запрос, подобный этому, я могу правильно получить их свойства

destinataries[0].Name: aa

Тем не менее,Я не могу установить (или не знаю, как) JQuery для отправки запроса таким образом ... Есть ли способ сделать это? Я также попытался отправить JSON, установить contentType и использовать JSON.stringify, но по какой-то причине я получаю нулевое значение на сервере. Есть идеи? Спасибо

1 Ответ

0 голосов
/ 11 октября 2019

Таким образом, у вас есть несколько вариантов решения этой проблемы. Я дам вам способ справиться с этим.

Чтобы "преобразовать" ваши данные в json formet в c # Объект, который вам действительно нужно десериализовать, я использую NewtonSoft Jsonconvert следующим образом:

Object result = JsonConvert.DeserializeObject<Object>(jsondata);

Тогда использование ajax, вероятно, неплохая идея, но я предпочитаю работать с RestSharp, который позволяет более c # -ish-одобрить запрос, который вы отправите. Как пример:

        var client = new RestClient("http://192.168.x.x:3000");

        var request = new RestRequest(string.Format("/person"), DataFormat.Json);
        IRestResponse response = client.Get(request);

Я не знаю, выполнимо ли изменение того, что вы используете в данный момент, или нет, но мне кажется более естественным сделать это в C #

Если вам нужнобольше документации, спросите или прочитайте это:

https://www.newtonsoft.com/json/help/html/N_Newtonsoft_Json.htm

http://restsharp.org/

Хорошего дня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...