【问题标题】:WebApi FromUri Binding url parameters with bracesWebApi FromUri 用大括号绑定url参数
【发布时间】:2016-04-23 20:47:25
【问题描述】:

我有一个带有 url 的 MVC 控制器,它有一个带有方括号的参数绑定,例如

 public Product GetProduct([Bind(Prefix = "product[productid]") int id)

它曾经与请求 url 一起工作,例如

http://localhost:8080/Product/GetProduct?product[productid] = 1001。

我能够在 MVC 控制器中将 id 的值设为 1001。不幸的是,我应该将其更改为 web api 控制器,并且我有这样定义的 api 控制器方法

public Task<Product> GetProduct([FromUri(Name=product[productid])] int id) 

为此,我得到了具有相同请求 url 的 404 响应。 [FromUrl] 与不带大括号的参数名称一起使用时 定义为

public Task<Product> GetProduct([FromUri(Name=productid)] int id) 

和像

这样的网址

http://localhost:8080/Product/GetProduct?productid = 1001

除了用大括号解析请求 url 并获取值之外,是否有任何解决方法。

【问题讨论】:

  • 根据this answer,url无效,必须转义。
  • 这不是关于处理参数化数组,它只是关于 url 格式。 MVC 控制器可以很好地使用大括号,而 WebApi 控制器则不能。可能是我没有正确理解它..我应该修复哪个部分.. URL 或控制器?

标签: asp.net-web-api2


【解决方案1】:

您的网址是正确的。您应该通过以下方式修复控制器:

public Task<Product> GetProduct([FromUri(Name=product.productid)] int id)

我真的不知道为什么会这样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多