【问题标题】:C# HttpGet syntax for array variable - tried {values:double[]} complains about brackets数组变量的 C# HttpGet 语法 - 尝试 {values:double[]} 抱怨括号
【发布时间】:2019-12-06 20:21:50
【问题描述】:
[HttpGet("CalibrationModelFile/{networkID:int}/{ConstituentID:int}/{values:double[]}/UpdateLimits")]

显然,我必须发送一个双打数组。如果我传入单个值,我的函数可以正常工作,例如:

{value1: double}/{value2: double}/ etc

但这很蹩脚,我可以发送很多值。 当我尝试拨打电话时,服务器收到以下错误(相关部分):

抱歉,图片太小了。

我在任何地方都找不到有用的文档。有什么想法吗?

提前致谢, 查克(“瑜伽士”)

【问题讨论】:

  • 为什么不将值作为查询参数发送?

标签: c# http-get


【解决方案1】:

Double[] 不是接受的约束类型之一。需要注意的重要一点是,这些只是约束,而不是真正的类型说明符。我们可以说我们想要values,并在参数中指定它是double[]。有关内置约束的列表,请参阅 the documentation

您可以使用FromRoute 属性最轻松地做到这一点。在参数中指定类型而不是路由。

[HttpGet]
[Route("CalibrationModelFile/{networkID:int}/{ConstituentID:int}/{values}/UpdateLimits")]
public IActionResult GetThing([FromRoute(Name = "values")] double[] values)
{
      return new OkObjectResult(values);
}

然后像这样调用

http://localhost:5000/api/CalibrationModelFile/12/13/5,2,3,4/UpdateLimits

返回

[
  5234
]

【讨论】:

  • 感谢乔希。这对我来说是一个明显的弱点,但你的回答和 html 链接真的让我加快了速度。真是太感谢你了。
  • 还是有问题:发送:“localhost:60490/api/db/CalibrationModelFile/2/56/…”这些都是正确的值;创建该 url 时,Values 参数是一个 double [ , ] 后端如下所示: public async Task UpdateConstituentLimits(int networkID, int ConstituentID, [FromRoute (Name = "values")] double[] values) { Stopped in debugger:值=双[0]; values[0] 抛出异常还有其他想法吗? :-)
  • 同样的错误?我已经在我自己的机器上测试过这个,所以我知道这是可行的。我需要查看您的控制器代码
  • 控制器:公共异步任务 UpdateConstituentLimits(int networkID, int ConstituentID, [FromRoute (Name = "values")] double[] values) {
  • 请使用此信息编辑您的原始答案。是不是同样的错误?
猜你喜欢
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多