我正在使用WebApi 1(Visual Studio:2010)
在少数情况下,客户端可以向方法发送可变(动态)数量的参数。 (通过POST
动词)
我一直在尝试通过发送可变数量的参数来测试它:
POST http://.../api/Claims HTTP/1.1
Host: ...
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 13
a=1&b=2&c=4
在服务器端:
[HttpPost]
public dynamic NewClaim1([FromBody] dynamic al)
{
return Request.CreateResponse(HttpStatusCode.OK, (object)al);
}
但是我收到一个空对象。 (200 OK
)
尝试#2
我也尝试过([FromBody] object al)
尝试#3
我也尝试过(object[] al)
尝试#4
public class A //using a class holder
{
public object[] obj { get; set; }
}
[HttpPost]
public dynamic NewClaim1([FromBody] A al)
{
return Request.CreateResponse(HttpStatusCode.OK, al);
}
但是没有成功
问题:
如何将动态发布参数发送到可以检索这些值的方法。
NB:
post
x-www-form-urlencoded
[FromBody]
参数您可以使用FormDataCollection检索表单值。
public void PostForm(FormDataCollection formdata)
{
foreach (KeyValuePair<string, string> formEntry in formdata)
{
string key = formEntry.Key;
string value = formEntry.Value;
}
}
@ jon的答案在一个级别为key: value
的对象的情况下,并且在所有属性均为字符串类型的唯一情况下可能会有所帮助。否则,提取复杂对象的实现必须比这复杂得多。我建议使用JObject
作为反序列化的一种类型,即由Newtonsoft提供