刚用webapi,
用$.get时,前后台的请求响应成功了,但在用$.post方法时遇到不少问题。
后搜到一英文资料,基本反映了我的问题,现摘译如下:
web api 很好,但post参数问题上,需要用些手段,有三个事你要知道
1、传基本参数进去,必须用【frombody】标注一下
public string Post(string value)
post函数即使执行,但永远返回null 。(在我这请求时,还必须把Post的action的名称也加上,才执行)
$.post(‘/api/ttt/post‘,{value:‘hshh‘})
2、只能接收一个参数,即不允许多个 [FromBody]
“无法将多个参数(“dwdm”和“state”)绑定到请求的内容”
“Web API reads the response body at most once, so only one parameter of an action can come from the request body. If you need to get multiple values from the request body, define a complex type.
Web API最多读取响应体一次,因此只有动作的一个参数可以获自请求体。如果需要从请求体得到多个值,需要定义复合类型。”
3、传入的对象必须是 =value的格式。
大多数的框架都是要key=value,但它却偏不是。 这就是上面永远返回null的原因。要让它返回值,必须
$.post(‘/api/ttt/post‘ ,‘=‘+value)
或
$.post(‘/api/ttt/post‘ ,{‘‘:value} )
以上各点是我实战演练过的,看来最新的webapi也没有修改这些问题。不知道项目组当时怎么想的。
总上所述。看来我要用post传参,永远都写一个类包装一下参数吧!
最后OracleCommand的参数绑定时,虽然指定名称,但顺序必须按sql中出现的顺序。坑爹呀,这些项目组咋就不多做些工作解决这些个坑呢, 一群坑爹货!
http://encosia.com/using-jquery-to-post-frombody-parameters-to-web-api
我花了些时间看原博文下的留言,太感动人呀! 有献计献策的,也有解释webapi设计目的,简直像到社会主义终极目标一样,是一群苦中求乐,无比融洽的同志们。
最重要的是,他们似乎都是真名,看来中央的政策是要向国际接轨啦,只有我们这种乌合之众才喜欢哗众取宠!
附另外一博文:http://www.cnblogs.com/r01cn/archive/2012/12/11/2812553.html