2015-11-04 2 views
0

У меня есть веб-форма, которая отправляет запрос ajax одному из моих контроллеров. Запрос выглядит следующим образом:Почтовые данные не заполняют модель, как ожидалось

Parsed

CustomerId:2937 
models:{"OriginalDate":"2015-08-12T17:06:37.25","BatteryName":"Briggs B-2H and 3H Water Tank","DeviceName":"Briggs B2-B3 - Water Tank 5","Date":"2015-08-11T22:06:00.000Z"} 

Raw

CustomerId=2937&models=%7B%22OriginalDate%22%3A%222015-08-12T17%3A06%3A37.25%22%2C%22BatteryName%22%3A%22Briggs+B-2H+and+3H+Water+Tank%22%2C%22DeviceName%22%3A%22Briggs+B2-B3+-+Water+Tank+5%22%2C%22Date%22%3A%222015-08-11T22%3A06%3A00.000Z%22%7D 

Мой метод контроллер выглядит:

[Route("Update")] 
    [HttpPost] 
    public IHttpActionResult Update(UpdateQuery model) 
    { 
     try 
     { 
      ... 
     } 
     catch (Exception ex) 
     { 
      return InternalServerError(ex); 
     } 
    } 

    public class UpdateQuery 
    { 
     public int CustomerId { get; set; } 
     public EventModel models { get; set; } 
    } 

    public class EventModel 
    { 
     public string OriginalDate { get; set; } 
     public string BatteryName { get; set; } 
     public string DeviceName { get; set; } 
     public string Date { get; set; } 
    } 

Когда приходит запрос, то CustomerId поле получает без каких-либо проблем, но части «моделей» нет.

Что может быть причиной этого?

ответ

1

Он должен работать, если вы отправляете действительный JSON, как это.

{ 
    "CustomerId": "2937", 
    "models": { 
     "OriginalDate": "2015-08-12T17:06:37.25", 
     "BatteryName": "Briggs B-2H and 3H Water Tank", 
     "DeviceName": "Briggs B2-B3 - Water Tank 5", 
     "Date": "2015-08-11T22:06:00.000Z" 
    } 
} 

Веб-апи модель связывания преобразует эту структуру JSON в модель, экземпляр UpdateQuery.

Пример кода для создания этой структуры JSON и отправить в конечную точку с помощью JQuery

var data = {models : {}}; 
data.CustomerId = 234233; 
data.models.OriginalDate = "2015-08-12T17:06:37.25"; 
data.models.BatteryName = "Briggs B-2H and 3H Water Tank"; 
data.models.DeviceName = "Briggs B2-B3 - Water Tank 5"; 
data.models.Date = "2015-08-11T22:06:00.000Z"; 


$.post(yourApiEndPointUrlHere, data, function(res) { 
    console.log(res); 
}); 
+0

Похоже, вы были на месте. –

Смежные вопросы