2016-12-16 22 views
0

我试图定义Post OData Web API操作。参数是一个数字。 我发现一个article 我跟着作为描述的文章,这里是源代码:OData操作参数在运行时为空

WebApiConfig.cs

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     // Web API configuration and services 

     // Web API routes 
     config.MapHttpAttributeRoutes(); 

     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

     config.MapODataServiceRoute("odata", "odata", model: GetModel()); 

    } 

    private static Microsoft.OData.Edm.IEdmModel GetModel() 
    { 
     ODataConventionModelBuilder builder = new ODataConventionModelBuilder(); 

     builder.EntitySet<ThumbnailQueue>("ThumbnailQueues"); 
     builder.EntitySet<Document>("Documents"); 


     EntitySetConfiguration<ThumbnailQueue> thumbnailQueue = builder.EntitySet<ThumbnailQueue>("ThumbnailQueues"); 
     var action = thumbnailQueue.EntityType.Action("PostThumbnailQueue"); 
     action.Parameter<long>("DocumentSN"); 


     var postThumbnailQueue = thumbnailQueue.EntityType.Collection.Action("PostThumbnailQueue"); 
     postThumbnailQueue.Parameter<long>("DocumentSN"); 

     return builder.GetEdmModel(); 
    } 
} 

的Web API

public class ThumbnailQueuesController : ODataController 
{ 
    private MarketingEntities db = new MarketingEntities(); 

    // POST: odata/ThumbnailQueues 
    [HttpPost] 
    public IHttpActionResult PostThumbnailQueue(ODataActionParameters parameters) 
    { 
     if (parameters == null) return BadRequest(); 

     var documentSN = (long)parameters["DocumentSN"]; 

     if (db.ThumbnailQueues.Any(t => t.DocumentSN == documentSN)) 
     { 
      return BadRequest("Record already exists"); 
     } 

     var myThumbnailQueue = new ThumbnailQueue(); 
     myThumbnailQueue.DocumentSN = documentSN; 
     myThumbnailQueue.Status = 1; 
     db.ThumbnailQueues.Add(myThumbnailQueue); 


     db.SaveChanges(); 

     return Ok(); 
    } 

我用邮差测试功能

enter image description here

但是在运行时,参数为空,所以我无法从参数中获取documentSN。我有几个小时解决这个问题,有人可以帮我解决这个问题吗?非常感谢〜

回答