我有以下代码
[HttpGet]
[Route("publish/{id}")]
public IHttpActionResult B(string id, string publishid=null) { ... }
据我了解,
~/..../publish/1?publishid=12
~/..../publish?id=1&publishid=12
应该可以工作并绑定(bind)两个参数,但它不适用于第二种情况。
在第一种情况下,publishid 不会被绑定(bind)。
所以我不明白为什么这不起作用。知道为什么会这样吗?
最佳答案
第二种情况不起作用,因为 id
是路由模板中的必需变量publish/{id}
.在 Web API 中,首先发生路由模板匹配,然后是操作选择过程。
其他情况:
publish/1
- 不能作为操作 B
是说publishid是必需的。为了防止这种情况,您可以将操作的签名更改为 B(string id, string publishid=null)
并且只有 id
绑定(bind)publish/1?publishid=10
- 在两者都绑定(bind)的情况下按预期工作。 关于asp.net-mvc - Web API 2 中具有 MVC 5 AttributeRouting 的 QueryString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20834018/