2016-01-18 45 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,但是这很可能是虽然矫枉过正...