WebApi传值、接收值的问题

 

先前在网上看的一段代码 ,一直不知道JsonObject是什么对象

[HttpPost]
        public async void submitForm()
        {
            StringBuilder sb = new StringBuilder();
            HttpContent content = Request.Content;
            JsonObject jsonValue = await content.ReadAsOrDefaultAsync<JsonObject>();
            foreach (var x in jsonValue)
            {
                sb.Append(x.Key);
                string va ;
                if (x.Value.TryReadAs<string>(out va))
                {
                    sb.Append(va);
                }
            }
        }

 

然后又在网上无意发现了下面这段代码

public HttpResponseMessage Put(JObject jObj)
{
 dynamic input = jObj;
 int TravelPlanID = input.TravelPlanID;
 int ProspectStatusType = input.ProspectStatusType;
}

 

发现JObject类型就是上面的JsonObject类型

JObject接收的数据类型为json类型,如:{"key":"123","value":"123"}

做个记录.

End.

--------------------------------------------------------------------------------------------------------------------------------------------

                              ******************************   另一篇  *****************************

--------------------------------------------------------------------------------------------------------------------------------------------

 

RC版WebApi参数绑定

之前看了http://www.cnblogs.com/dudu/archive/2012/05/11/asp_net_webapi_httpclient.html写的httpclient+webapi的一个例子,参考他的代码子阶写了一个,结果请求服务获取的参数都是空的,而将参数绑定在url中则可以正常得到参数,折腾好久,终于在网上找到了相关资料,原来RC版WebApi在参数绑定上发生了些变化。

rc版的webapi参数绑定器分为两种:

1.Model Binding

2.Formatters

其中Model Binding仅从url中取值,这点是与mvc的model binding有区别的,

formatters是从request的body中取值,并且是把整个body作为一个(不可为多个)对象解析为一个参数。

/?id=123&name=bob   void Action(int id, string name) // 两个参数都是基本类型,则从url中获取

/?id=123&name=bob   void Action([FromUri] int id, [FromUri] string name) // 标记为FromUri的参数从url中获取.

void Action([FromBody] string name); // 标记为FromBody的参数从request的body中取值.

?
public class Customer {  
// a complex object    
public string Name { get ; set ; }    
public int Age { get ; set ; }  
}

/?id=123   void Action(int id, Customer c) // id 从url获取, c 是一个自定义类型,从request的body中取值.

void Action(Customer c1, Customer c2) // 这样的写法是错误的,从request的body中取值的参数只能有一个

void Action([FromUri] Customer c1, Customer c2) // 这样是正确的, c1 从url获取 、 c2 从request的body中取值

void Action([ModelBinder(MyCustomBinder)] SomeType c) //指定一个明确的模型绑定器使用来创建参数.

?
// 位置属性类型声明应用于所有的参数实例
[ModelBinder(MyCustomBinder)]
public class SomeType { }

void Action(SomeType c) // c的类型指定使用model binding.

到此,已经明白为什么RC版下服务获取参数为空了,也知道如何处理了。

http://www.cnblogs.com/sicket/articles/2567129.html

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值