2016-07-05 71 views
0

我有一個OData控制器。刪除和修補方法工作得很好,但我無法擊中Post方法。我必須發佈整個對象還是隻發佈關鍵字好嗎?未找到OData控制器的Post方法

補丁請求行之有效:

PATCH http://localhost:50161/odata/Carousel(3)

返回404 POST請求:

POST http://localhost:50161/odata/Carousel(3)

我不發送任何身體w第i發佈請求

控制器:

public class CarouselController : ODataController<CarouselTableDto> 
{ 
    private readonly CarouselService _service; 

    public CarouselController(CarouselService service) 
    { 
     _service = service; 
    } 

    public class ModelRegistration : ModelRegistration<CarouselTableDto> { } 

    protected override IQueryable<CarouselTableDto> GetData() 
    { 
     return _service.QueryAll(); 
    } 

    public async Task<IHttpActionResult> Patch([FromODataUri] int key, Delta<CarouselTableDto> data) 
    { 
     ChangePassivable(data, active => _service.SetIsActive(key, active)); 
     return StatusCode(HttpStatusCode.NoContent); 

    } 

    public async Task<IHttpActionResult> Delete([FromODataUri] int key) 
    { 
     _service.Delete(key); 
     return StatusCode(HttpStatusCode.NoContent); 
    } 

    [HttpPost] 
    public IHttpActionResult Post([FromODataUri] int key) 
    { 
     _service.Copy(key); 
     return StatusCode(HttpStatusCode.NoContent); 
    } 
} 

回答

0

如果你想發佈一個實體,你應該張貼到實體集,如... /旋轉木馬

和有效載荷,如:

 string payload = @"{ 
      ""ID"": 3, 
      ""Name"": ""def"" 
     }";