powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Клиент послал JSON севрер перевёл его в Model
15 сообщений из 15, страница 1 из 1
Клиент послал JSON севрер перевёл его в Model
    #39024706
e24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
e24
Гость
Модель:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public class Table1
{
   public int Table1Id { get; set; }
   public string Name { get; set; }
   public virtual IList<Table2> table2 { get; set; }

   public string Table2JSON { get; set; } //для получения JSON  в текстовом формате для Table2, чисто для проверки что пришло
}
public class Table2
{
   public int? Table2Id { get; set; }
   public string Table2Name { get; set; }
}



Клиент посылает JSON.
WebApi PUT-метод (UPDATE) - принимает JSON:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
public async Task<IHttpActionResult> PutTable1(int id, Table1 table1)
{
   //получаю корректно все поля модели "Table1"
   //А вот с моделью "Table2" проблема - записей нет (значение полей == null).

   //JSON для "Table2": 
   //[{"Table2Name":"Name-1","Table2Id":1},{"Table2Name":"Name-2","Table2Id":2}]
}



Если отсылаю дополнительный параметр для "table2", то появляется одна запись table2[0] с значениями полей == null
Если не отсылаю, то запись "table2" вообще не появляется, то есть table2 == null

Что-то не так с JSON для "Table2".

Может кто увидит ошибку ...
...
Рейтинг: 0 / 0
Клиент послал JSON севрер перевёл его в Model
    #39024741
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
e24,

полный json давай
...
Рейтинг: 0 / 0
Клиент послал JSON севрер перевёл его в Model
    #39024907
e24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
e24
Гость
А как его получить?
Сервер получает уже готовые данные в модель "Table1":
Код: c#
1.
2.
3.
4.
public async Task<IHttpActionResult> PutTable1(int id, Table1 table1)
{ 
   //в модели "table1" - уже заполнены все поля
}



Хром, вкладка Network, показывает:
Код: plaintext
1.
2.
3.
4.
5.
Form Data -> 
   Table1Id: 1198
   Name: Наименование записи
   table2: [{"Table2Name":"Name-1","Table2Id":1},{"Table2Name":"Name-2","Table2Id":2}]
   Table2JSON: [{"Table2Name":"Name-1","Table2Id":1},{"Table2Name":"Name-2","Table2Id":2}]

В принципе я получаю сами данные в "Table2JSON".
Их можно как-то распарсить (декодоровать) в экземпляр модель Table2 ?
...
Рейтинг: 0 / 0
Клиент послал JSON севрер перевёл его в Model
    #39024915
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
e24А как его получить?
По идее Fiddler должен помочь, ну или тупо в Javascript'е забабахать в input и copy/paste.
...
Рейтинг: 0 / 0
Клиент послал JSON севрер перевёл его в Model
    #39024918
e24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
e24
Гость
В ASP.NET Handlers (ashx) делал так:
Код: c#
1.
2.
3.
  string Table2JSON = context.Request.Params["Table2JSON"];
  System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
  Table2 table2[] = serializer.Deserialize<Table2[]>(Table2JSON);
...
Рейтинг: 0 / 0
Клиент послал JSON севрер перевёл его в Model
    #39024920
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
e24,
Там полно способов забрать JSON.
...
Рейтинг: 0 / 0
Клиент послал JSON севрер перевёл его в Model
    #39024922
e24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
e24
Гость
Fiddler только принимает с сервера ответ, вкладка Composer.
Или я ошибаюсь?
...
Рейтинг: 0 / 0
Клиент послал JSON севрер перевёл его в Model
    #39024929
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
e24 Fiddler только принимает с сервера ответ, вкладка Composer.
Или я ошибаюсь?
Не помню точно какая вкладка, но он ловит все сообщения между сервером и браузером в среиализованном виде.
...
Рейтинг: 0 / 0
Клиент послал JSON севрер перевёл его в Model
    #39025108
e24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
e24
Гость
Разобрался с Fiddler.
Передаётся в таком формате:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
table2=Table2Id%3A234%Table2Name%3A6941713920367&Table1Id=1198&Name=%D0%92% ...

Где:
2-я таблица.
table2=Table2Id%3A234%Table2Name%3A6941713920367&
1-я таблица.
Table1Id=1198&Name=%D0%92%
...
Рейтинг: 0 / 0
Клиент послал JSON севрер перевёл его в Model
    #39025124
e24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
e24
Гость
Фиг с ним.
Может кто в курсе, какой самый правильный для WebAPI метод парсинга (декодирования) JSON в экземпляр Модели?
...
Рейтинг: 0 / 0
Клиент послал JSON севрер перевёл его в Model
    #39025210
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
e24Разобрался с Fiddler.
Передаётся в таком формате:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
table2=Table2Id%3A234%Table2Name%3A6941713920367&Table1Id=1198&Name=%D0%92% ...

Где:
2-я таблица.
table2=Table2Id%3A234%Table2Name%3A6941713920367&
1-я таблица.
Table1Id=1198&Name=%D0%92%


ну я так и думал, никакого JSON. передавай JSON и будет щастье.
...
Рейтинг: 0 / 0
Клиент послал JSON севрер перевёл его в Model
    #39025211
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
e24Фиг с ним.
Может кто в курсе, какой самый правильный для WebAPI метод парсинга (декодирования) JSON в экземпляр Модели?

нет никакого самого правильно метода парсинга. WebAPI кушает JSON или XML по дефолту, ты ему черти чо пихаешь.
...
Рейтинг: 0 / 0
Клиент послал JSON севрер перевёл его в Model
    #39025292
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
e24,

...попробуйте послать JSON через POST, ни и соответственно подправить принимающий метод контроллера ...
...
Рейтинг: 0 / 0
Клиент послал JSON севрер перевёл его в Model
    #39025388
e24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
e24
Гость
hVosttты ему черти чо пихаешь
Так, в том то и прикол, что "черти чо" (Table1) нормально принимает
А JSON (Table2) - нет.
Вообще это ExtJS.

Вот код клиента:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
var storeTable2 = Ext.create('Ext.data.JsonStore', {
  model: ...,
  proxy: ...,
  ...
});

var PanelData = new Ext.FormPanel({
  items: [
    //Текстовые поля таблицы "Table1"
    //И ДатаГрид с хранилищем "storeTable2"
  ],
  buttons: [
  text: "Save",
  handler:
    function () {

      //Это Store 
      var records = [];
      storeTable2.data.each(function (rec) { records.push(rec.data); });

      PanelData.submit({
        url: ...
        method: POST or PUT,
        params: { Table2JSON: Ext.encode(records) },
      });
    }
});
...
Рейтинг: 0 / 0
Клиент послал JSON севрер перевёл его в Model
    #39025552
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
e24Так, в том то и прикол, что "черти чо" (Table1) нормально принимает

плоская модель потому что. вложенные модели в x-www-form-urlencoded не поддерживаются. это азы веба, не надо катить бочку на WebAPI, ведь тут никаким JSON-ом не пахнет.

код клиента надо допиливать, чтобы енкодил в JSON (JSON.stringify) и отправлял с правильным заголовком.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Клиент послал JSON севрер перевёл его в Model
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]