我有以下代码
[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)
之类,并且仅将ojit_code绑定(bind)为id
-两者都绑定(bind)的地方按预期工作。