【发布时间】:2018-01-01 02:20:58
【问题描述】:
我将此查询发送到 ASP.Core 控制器操作(我添加了换行符以提高可读性):
GET http://localhost:5000/Files/AddFileConfirmed?generatedId=90
&generatedId=73
&generatedId=25
&generatedId=199
&generatedId=69
&generatedId=245
&generatedId=238
&generatedId=83
&generatedId=164
&generatedId=208
&generatedId=156
&generatedId=83
如果操作接受int[],则generatedId 绑定正确,但如果byte[] 绑定失败。数组应该是字节数组而不是整数数组。
[HttpGet]
public string AddFileConfirmed(int[] generatedId)
{
return $"ID = {(generatedId == null? "Null" : String.Join(", ", generatedId))}";
}
为什么我不能绑定到字节数组?
【问题讨论】:
-
可能没有可以处理字节数组的默认模型绑定器。先检查一下。好消息是该框架足够灵活,您可以创建自己的活页夹来处理它。您还应该考虑使用有助于解决问题的适当参数属性。
-
干杯@Nkosi,可能是缺少声音的活页夹。 “正确的参数属性”是什么意思?
-
在核心中,与以前的版本相反,您必须明确告诉操作在哪里查找数据以绑定模型。 Customize model binding behavior with attributes
-
@Nkosi 来自链接的有趣引用:"T[]:除了 byte[] 类型的数组,绑定将 T[] 类型的参数设置为 Array.Empty
(). byte[] 类型的数组设置为 null。” -
如果我是你,我也会问自己:使用
byte[]代替int[]有什么好处?
标签: c# asp.net-core