mvc web api 关于post参数怎么接收,求教

net_HCC 2013-12-05 03:13:29
mvc web api 有个Post请求的方法,当参数放在url上的时候api/controller?id=1,参数id可以接收到,但是当$.post("api/controller",{id:1}),把参数放到request body 里就接收不到了,这是为什么?
...全文
10053 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ww8002 2016-05-19
  • 打赏
  • 举报
回复
引用 11 楼 ny_lonely 的回复:
为什么不用Newtonsoft.Json.Linq.JObject作为post的参数?


        [HttpPost]
        public ApiResult SaveProject(JObject jObject)
        {
如果提示[MissingMethodException: 无法创建抽象类。] 是什么原因
rokerker 2014-10-11
  • 打赏
  • 举报
回复
看错了 这个是2013年的帖子......
rokerker 2014-10-11
  • 打赏
  • 举报
回复
我的理解是这样的,如果客户端可控,就是说是可以封装访问参数的,那封装成为类,每次访问前转换为Json串来访问,这个可以,只是个工作量的问题。但是如果客户端不可控,是普通的Httppost访问,这个没地方来封装访问类,也没得转换json串,这种情况呢?
「已注销」 2014-10-09
  • 打赏
  • 举报
回复
为什么不用Newtonsoft.Json.Linq.JObject作为post的参数?


        [HttpPost]
        public ApiResult SaveProject(JObject jObject)
        {
net_HCC 2013-12-05
  • 打赏
  • 举报
回复
总不能每个Post方法都写一个类吧
zhujiazhi 2013-12-05
  • 打赏
  • 举报
回复
web api,当用post传数据里, 后台要用一个class来封装的,要不然获取不到的 http://weblog.west-wind.com/posts/2012/May/08/Passing-multiple-POST-parameters-to-Web-API-Controller-Methods
net_HCC 2013-12-05
  • 打赏
  • 举报
回复
求大神指点,我的代码已经放上去了。。。。。。
net_HCC 2013-12-05
  • 打赏
  • 举报
回复
net_HCC 2013-12-05
  • 打赏
  • 举报
回复

        /// <summary>
        /// 获取推送key
        /// </summary>
        [HttpPost]
        [Route("Android/{prefix}/Clients")]
        public string Post(string prefix,string deviceId)
        {
            string pushKey = "h3KWPLcfTJo7ViP6A6NkTcTgcg5o3MbgagsowdQcmQR8bJCBjSTm2jwVwn3E08fN";
            return pushKey;
        }
前端调用
$.post("Android/edu/Clients",{deviceId:101})  //取不到
$.post("Android/edu/Clients?deviceId=101")  //这样没问题
这是为毛啊?????
H_Gragon 2013-12-05
  • 打赏
  • 举报
回复
帮顶!
宝_爸 2013-12-05
  • 打赏
  • 举报
回复
Post用Post方法,参见下面的代码:

public class ValuesController : ApiController
    {
        // GET api/values
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

        // GET api/values/5
        public string Get(int id)
        {
            return "value";
        }

        // POST api/values
        public void Post(string value)
        {
        }

        // PUT api/values/5
        public void Put(int id, string value)
        {
        }

        // DELETE api/values/5
        public void Delete(int id)
        {
        }
    }
代码来自: http://www.codeproject.com/Articles/588909/ASP-NET-WEB-API-Basics-MVC-4
net_HCC 2013-12-05
  • 打赏
  • 举报
回复
那就写多个参数类吧。。。。用时用路把多个post分开,避免冲突
zhujiazhi 2013-12-05
  • 打赏
  • 举报
回复
引用 7 楼 net_HCC 的回复:
总不能每个Post方法都写一个类吧
目前来说,web api 是这样的
宝_爸 2013-12-05
  • 打赏
  • 举报
回复
是的,Post方法只接受一个参数。你需要加入一个类。 C#中写类已经很容易了 class PostParameters { int Id{get;set;} .... }

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧