2016-01-18 41 views
0

我想將url中的id綁定到我的FromBody對象。這裏是我的代碼:如何在url中獲取ID

[HttpPost] 
[Route("draft/{id:int}/save")] 
public IHttpActionResult SaveCustomRecallDraft([FromBody] CustomRecallDraft request) 
{ 
    return Ok(); 
} 

我在CustomRecallDraft對象的id屬性。但是,當我做網絡請求的ID字段爲空。它是一個可空的ID。這是我的替代代碼

[HttpPost] 
[Route("draft/{id:int}/save")] 
public IHttpActionResult SaveCustomRecallDraft([FromUri] int id, [FromBody] CustomRecallDraft request) 
{ 
    return Ok(); 
} 

此代碼有效。 id字段不爲空。但是我怎麼能綁定到我的CustomRecallDraft對象中的id字段。我不想要兩個參數。

+0

如果你不想從URL的ID,那麼爲什麼把它定義爲您的路線的一部分? – mason

+0

我確實需要這個ID。但我希望它綁定到我的CustomRecallDraft對象。它只會綁定到[fromuri] – Luke101

回答

1

如果我理解正確的話,你想有這樣的事情:

[HttpPost] 
[Route("draft/{id:int}/save")] 
public IHttpActionResult SaveCustomRecallDraft([FromBody] CustomRecallDraft request) 
{ 
    //request.id is the {id:int} from the uri 
    return Ok(); 
} 

基於所有的文件我讀過有關屬性的路由(例如,herehere),可以不完成。

您可以做的最好的方法是使用FromUri參數,並設置request.id = id。或者只是強制他們都是一樣的。

0

你可以編寫自定義模型綁定爲你CustomRecallDraft,但是這很可能是雖然矯枉過正...