asp.net-mvc - Web API 2 中具有 MVC 5 AttributeRouting 的 QueryString

标签 asp.net-mvc asp.net-web-api query-string

我有以下代码

[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/

    相关文章:

    html - 如何创建一个表,我可以从中添加或删除列

    javascript - Angular js 验证函数在验证的 api 调用完成之前返回

    c# - 从 AngularJS 和 ASP.net MVC 传递数据 $http.post 获取 null

    asp.net-mvc - 不同语言的MVC数据注释?

    rest - 是否使用子资源?

    vb.net - Windows 服务应用程序中自托管 ASP.NET Web API 的问题

    .net - 为什么 .NET OData Serializer 这么慢

    javascript - 在 URL 中声明一个变量,并在导航到页面时在 Javascript 中为其分配一个值

    asp.net-mvc - 使用 Razor 引擎在mvc4中重写url

    java - UriBuilder 不正确地编码查询参数值?