Asp.Net WebAPI Get提交、Post提交处理
2015-12-30 19:10
701 查看
1.启用跨域提交
2.Get方式和MVC相同
Get方式前台代码
Get方式后台代码
3.POST方式和MVC中不相同,只获取第一个参数,需要制定 FromBody标志
前台代码
对应的后台代码
参考资料:
/article/4973726.html
<system.webServer> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Methods" value="GET, POST" /> </customHeaders> </httpProtocol> </system.webServer>
(function () { var domain = 'http://localhost:5000/'; var apiUrl = { getPostOne: function (action) { return domain + 'postone/' + action; }, getOne: function (action) { return domain + 'getone/' + action; } } window.apiUrl = apiUrl; })();
2.Get方式和MVC相同
Get方式前台代码
/* * 跨域的get请求 * 1个参数 */ $.getJSON(apiUrl.getOne("testone"), { name: 234 }).done(function (data) { alert(data); }); /* * 跨域的get请求 * 2个参数 */ $.get(apiUrl.getOne("TestTwo"), { name: 'abc', age:11 }, function (data) { alert(data); });
Get方式后台代码
/* * 1.WebApi 控制器方法 仅支持一种格式的请求,默认为Get请求,如果其中一个指定Post,其他请求也为Post * 2.WebApi 控制器方法 默认不支持Get请求, * 抛出异常:The requested resource does not support http method 'GET'. * 需要手动指定 * FromBody:指定参数来自外部请求 * FromUri:指定参数来自url */ //前台Get请求获取一个参数 [HttpGet] public string TestOne(string name) { return string.Format("姓名:{0}", name); } //前台Get请求获取2个参数 [HttpGet] public string TestTwo(string name, int age) { return string.Format("姓名:{0},年龄:{1}", name, age); }
3.POST方式和MVC中不相同,只获取第一个参数,需要制定 FromBody标志
前台代码
/* * 跨域的post请求 * 无参数,获取列表 */ $.post(apiUrl.getOne("PostNull"), { }, function (data) { console.info(data); alert(data[0].name); }); /* * 跨域请求Post * 一个参数,不能指定key的名称 * 注意参数指定 json 字符串 */ $.post(apiUrl.getOne("PostOne"), { '': '张三' }, function (data) { alert(data); }); /* * 跨域请求Post * 2个参数----失败 */ $.post(apiUrl.getOne("PostTwo"), { name: '张三' ,age:12}, function (data) { alert(data); }); /* * 跨域请求Post * 1个对象参数 */ $.post(apiUrl.getOne("PostThree"), { name: '张三', age: 12 }, function (data) { alert(data); }); $.ajax({ url: apiUrl.getOne("PostThree"), data: { name: '张三', age: 12 }, type: 'post', success: function (data) { alert(data); } });
对应的后台代码
/* * 1.WebApi 控制器方法 默认支持Post请求 * 2.默认情况下,一个控制器只支持一个Post请求 * 指定Controller,不指定action时,当前controller中有多种请求方式, * 则:抛出异常,Multiple actions were found that match the request * 3.post方式只能接受一个参数而且必须放在FromBody 里用FromBody特性标识 */ //Post请求无参方法,返回结果json格式 [HttpGet] [HttpPost] public List<object> PostNull() { List<object> list = new List<object>() { new { name="张三"}, new { name="李四",age=11}, }; return list; } //Post请求一个参数 public string PostOne([FromBody] string name) { return string.Format("姓名:{0}", name); } /*Post请求2个参数, * 参与外部交互action中只接受一个参数 * 不支持多个FromBody * 抛出异常:"Can't bind multiple parameters ('name' and 'age') to the request's content." */ public string PostTwo([FromBody] string name, [FromBody] int age) { return string.Format("姓名:{0},年龄:", name, age); } //Post请求 1个 对象参数 public string PostThree([FromBody] Student stu) { return stu.ToString(); }
参考资料:
/article/4973726.html
相关文章推荐
- 详解ASP.NET页面生命周期
- 2.06StuModify.aspx(修改姓名,性别,所在班级)
- 检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法
- ASP.NET打开新窗口的多种方法
- 12.30 asp.net验证码及怎么获取里面的数值(整合)
- .NET中操作ppt等Office的控件
- Asp.net 异步调用WebService
- ASP.NET(C#)——Menu控件实现导航栏
- ASP.NET MVC中从前台页面视图(View)传递数据到后台控制器(Controller)方式
- 百度API用法
- asp.net文本编辑器的用法
- Raspbian安装xrdp远程
- asp.net 程序,当发生找不到文件的错误时,如何正确定位是哪个文件?
- IIS中启用ASP并连接Access数据库的解决办法
- ASP.NET 运行时详解 揭开请求过程神秘面纱
- 详解ASP.NET页面生命周期
- 树莓派交叉编译环境构建(含 wiringPi)
- .NET项目中存在多个web.config文件时的加载顺序
- 20151229:AJax :用asp.net方式做一个查询
- Asp.net MVC 权限过滤器实现方法的最佳实践