Решение может существовать, но я пробовал несколько вещей в Интернете, но я не могу найти подходящее решение. Вот мой сценарий. Я хотел передать две модели в сериализацию (я использую Json.JsonConvert.SerializeObject) для отправки в мой API. Что я сделал до сих пор
На клиенте: у меня есть mOrder (модель заказа) и mOPLog (модель журнала). И то, и другое я объединил в один и отправил в Json Serializer, затем в мой API
var data = new
{
DataTable1 = mOrder,
DataTable2 = mOPLog
};
string sUrl = GlobalParameters.Host + "api/Order/UpdateOrderWithLog";
string sResult = HttpHelper.httpPut(sUrl, Newtonsoft.Json.JsonConvert.SerializeObject(data, Newtonsoft.Json.Formatting.Indented));
Тогда на стороне контроллера Api я заявляю вот так.
public Models.ApiResult UpdateOrderWithLog(dynamic data)
{
Models.Order model = Newtonsoft.Json.JsonConvert.DeserializeObject<Models.Order>(data.ChildrenTokens[0].First);
Выдает ошибку при десериализации и привязке к моей модели. Я могу получить Данные по API Controller. Вот данные, как это выглядит.
{{
"DataTable1": {
"OrderID": "0000006915",
"GroupID": "0000000001",
"GroupCode": "WG01",
"GroupName": "MatGroup",
"ShiftID": "0000000001",
"ShiftCode": "WS01",
"ShiftName": "DayShift",
"OrderDate": "2019-03-08T10:25:09.243",
"OrderNO": "0000006915",
"Memo": "Test123",
"OrderDetail": [
{
"OrderDetailID": "0000007103",
"OrderID": "0000006915",
"SourceType": "IQR",
"SourceID": "0000126061",
"Memo": "",
"Accept": false
},
{
"OrderDetailID": "0000007104",
"OrderID": "0000006915",
"SourceType": "IQR",
"SourceID": "0000126062",
"Memo": "",
"Accept": false
}
]
},
"DataTable2": {
"LogID": null,
"LogType": "Update",
"OperatorName": "admin",
"OperatingTime": "2019-03-13T05:53:43.5940133+08:00",
"OperationType": "Order",
"Operation": "0000006915",
"OperationContent": "",
"OperatingSystem": "Win10",
"TerminalName": "DH01",
"IPAddress": "192.168.16.124"
}
}}
Но система выдает «Удаленный сервер возвратил ошибку: (500) Внутренняя ошибка сервера» Я не уверен, где я делаю ошибку. Если кто-нибудь сталкивался с Json Serializing и De serialization нескольких объектов. Любая помощь будет принята с благодарностью. Спасибо
Обновление:
Я создал класс с динамической моделью, а затем отправил его в API Controller.
public class LogDyModel
{
public dynamic m1 { get; set; }
public dynamic m2 { get; set; }
}
на моем клиенте я связываю свою модель с этой динамикой и отправляю на мой контроллер API
Models.LogDyModel data = new Models.LogDyModel();
data.m1 = mOrder;
data.m2 = mOPLog;
На моем контроллере API
public Models.ApiResult UpdateOrderWithLog(Models.LogDyModel data)
{
var deserial = Newtonsoft.Json.JsonConvert.DeserializeObject<Models.LogDyModel>(Newtonsoft.Json.JsonConvert.SerializeObject(data));
Models.Order model = Newtonsoft.Json.JsonConvert.DeserializeObject<Models.Order>(Newtonsoft.Json.JsonConvert.SerializeObject(deserial.m1));
Models.OpLog mLog = Newtonsoft.Json.JsonConvert.DeserializeObject<Models.OpLog>(Newtonsoft.Json.JsonConvert.SerializeObject(deserial.m2));
Теперь все отсортировано, как я хотел. Надеюсь, что это поможет кому-то похожему вопросу. Спасибо за поддержку, кто бы ни пытался проверить и помочь мне.