2015-11-04 53 views
0

我有一个Web窗体向我的控制器之一提交ajax请求。请求如下所示:未按预期方式填充模型的发布数据

解析的

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"} 

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; } 
    } 

当请求到来时,客户ID字段得到填充没有任何问题,但“模型”部分没有。

这可能是什么原因造成的?

回答

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" 
    } 
} 

在Web API模型绑定将这个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

看起来你是在现场发送到端点。 –