我有以下代码

[HttpGet]
[Route("publish/{id}")]
public IHttpActionResult B(string id, string publishid=null) { ... }

据我了解,
~/..../publish/1?publishid=12
~/..../publish?id=1&publishid=12

应该可以工作并绑定(bind)两个参数,但在第二种情况下将无法工作。
在第一种情况下,publishid将不受约束。

所以我不明白为什么这行不通。知道为什么会这样吗?

最佳答案

第二种情况不起作用,因为id是路由模板publish/{id}中的必需变量。在Web API中,首先进行路由模板匹配,然后进行操作选择过程。

其他情况:

  • publish/1-无法使用,因为B表示需要publishid。为了防止这种情况,您可以将 Action 的签名更改为B(string id, string publishid=null)之类,并且仅将oj​​it_code绑定(bind)为
  • id-两者都绑定(bind)的地方按预期工作。
  • 10-08 08:30