【问题标题】:Allowing parameter name to have "[" in ASP.Net Core WEB API允许参数名称在 ASP.Net Core WEB API 中有“[”
【发布时间】:2017-11-02 19:34:33
【问题描述】:

我的操作方法应该是这样的:

 public IActionResult GetAll([FromQuery]string page[Number],[FromQuery]string page[Size])
  {
     //code
  }

HTTP Request is like: "GetAll?page%5Bnumber%5D=0&page%5Bsize%5D=100".

问题:参数名称不允许我有方括号。

【问题讨论】:

  • 您必须考虑到name[1]name[key] 不是 HTML 功能。从 HTML 的角度来看,它们只是名称,不是数组。只是某些服务器端应用程序/语言(例如 PHP)将其解释为数组。但同样,它不是一个标准,您不应该不依赖 name[key] 代表一种字典/列表这一事实
  • 同样适用于 Get 参数:index?a=1&a=2 只是 tat:a 有 2 个值;一次用 1,一次用 2。它不是数组,也没有在 HTML/Http 标准中定义。每种语言都决定 tzo 做什么,即只计算第一个或最后一个。只有当它是a[]=1&a[]=2 时,有些人可能会创建一个数组,但这完全取决于实现。这就是为什么您应该避免使用此类术语/模式。

标签: asp.net-web-api asp.net-core asp.net-core-mvc asp.net-web-api-routing


【解决方案1】:

此外,我会使用更简单的参数名称,您可以使用字典来解决这个问题:

public IActionResult GetAll(Dictionary<string, string> page) {
  var x = page["Number"];
  var y = page["Size"];
}

【讨论】:

  • 我无法控制端点 :) 我也会让它变得更简单!谢谢!
猜你喜欢
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 2020-07-01
  • 2012-12-28
  • 1970-01-01
  • 2021-08-20
相关资源
最近更新 更多