将对象的数组传递给webapi
我有一个.net mvc 4 webapi项目,我试图将一个对象数组传递给我的控制器上的方法。
我在SO上找到了一些关于需要设置我的对象属性的例子:param1 = whatever&param2 = bling&param3 = blah。
但我不知道如何使用它来传递集合。
这是我的方法签名。 注意我用[FromUri]属性修饰了参数。
public List GetPhoneNumbersByNumbers([FromUri] PhoneRequest[] id) { List prs = new List(); foreach (PhoneRequest pr in id) { prs.Add(PhoneNumberBL.GetSinglePhoneResult(pr.PhoneNumber, pr.RfiDate, pr.FinDate, pr.State)); } return prs; }
这是我简单的PhoneRequest对象:
public class PhoneRequest { public string PhoneNumber { get; set; } public string RfiDate { get; set; } public string FinDate { get; set; } public string State { get; set; } }
这是我用来传递的样本:
https://localhost:3610/api/phonenumber/getphonenumbersbynumbers/ [{"PhoneNumber":"8016667777","RfiDate":"","FinDate":"2012-02-11","State":"UT"}, {"PhoneNumber":"8018889999","RfiDate":"2012-12-01","FinDate":"","State":"UT"}]
用这个回复“坏请求”
我也尝试过这个
https://localhost:3610/api/phonenumber/getphonenumbersbynumbers? id=[{"PhoneNumber":"8016667777","RfiDate":"","FinDate":"2012-02-11","State":"UT"}, {"PhoneNumber":"8018889999","RfiDate":"2012-12-01","FinDate":"","State":"UT"}]
它到达方法,但数组为null。
如何将PhoneRequest对象的数组传递给我的Web API方法?
尝试以这种格式从uri传递PhoneRequest []:
https://localhost:3610/api/phonenumber/getphonenumbersbynumbers? id[0][PhoneNumber]=8016667777&id[0][FinDate]=2012-02-11&id[0][State]=UT& id[1][PhoneNumber]=8018889999&id[1][RfiDate]=2012-12-01&id[1][State]=UT
我建议你使用POST。
当您查询字符串增长时,您将遇到URL最大长度的问题,这取决于浏览器。
如果你要传递很多参数,即使你真的只是GETting数据,POST也是完全可以接受的。 但是,您将丢失的是用户使用查询字符串为特定页面添加书签的function。
我创建了一个自定义模型绑定器, FieldValueModelBinder类,它可以有效地传递包含嵌套数组或通用列表类型数据的任何对象,查询字符串具有字段名称对,而不会嵌入任何JSON和XML结构。 模型绑定器可以解决上面讨论的所有问题。 由于这个问题由问题ID 19302078扩展,您可以在该主题中查看我的答案的详细信息。
上述就是C#学习教程:将对象的数组传递给webapi分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1008428.html