1.启用跨域提交

  <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 控制器方法 默认仅支持一种格式的请求,默认为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.默认情况下,
* 指定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=},
};
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();
}

参考资料:

http://www.cnblogs.com/babycool/p/3922738.html

Asp.Net WebAPI Get提交、Post提交处理的更多相关文章

  1. .NET压缩图片保存 .NET CORE WebApi Post跨域提交 C# Debug和release判断用法 tofixed方法 四舍五入 (function($){})(jQuery); 使用VUE+iView+.Net Core上传图片

    .NET压缩图片保存   需求: 需要将用户后买的图片批量下载打包压缩,并且分不同的文件夹(因:购买了多个用户的图片情况) 文章中用到了一个第三方的类库,Nuget下载 SharpZipLib 目前用 ...

  2. ASP.NET前台html页面AJAX提交数据后台ashx页面接收数据

    摘要:最近在写网站,好不容易弄好了需求又变了,没错企业的门户网站硬要弄成后台管理系统一样,没办法作为小工的我只能默默的改.前台HTML页面需要提交数据到后台处理,又不能用form表单,于是乎研究了1天 ...

  3. ASP.NET WebApi OWIN 实现 OAuth 2.0

    OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth 允许用户提供一个令牌, ...

  4. Asp.Net WebApi Action命名中已‘Get’开头问题

    ApiController 中的Action 命名已‘Get’开头,Post方法提交失败 场景: 1.action命名使用Get开头 /// <summary> /// 获取用户的未读消息 ...

  5. Asp.Net WebApi 启用CORS跨域访问指定多个域名

    1.后台action指定 EnableCors指定可访问的域名多个,使用逗号隔开 //支持客户端凭据提交,指定多个域名,使用逗号隔开 [EnableCors("http://localhos ...

  6. Asp.Net WebApi+Microsoft.AspNet.WebApi.Core 启用CORS跨域访问

    WebApi中启用CORS跨域访问 1.安装 Nugget包Microsoft.AspNet.WebApi.Cors This package contains the components to e ...

  7. ASP.NET WebApi服务接口如何防止重复请求实现HTTP幂等性

    一.背景描述与课程介绍 明人不说暗话,跟着阿笨一起玩WebApi.在我们平时开发项目中可能会出现下面这些情况; 1).由于用户误操作,多次点击网页表单提交按钮.由于网速等原因造成页面卡顿,用户重复刷新 ...

  8. Asp.Net WebApi Post请求整理(一)

    Asp.Net WebApi+JQuery Ajax的Post请求整理 一.总结 1.WebApi 默认支持Post提交处理,返回的结果为json对象,前台不需要手动反序列化处理.2.WebApi 接 ...

  9. Asp.Net WebApi Get请求整理(一)

    Asp.Net WebApi+JQuery Ajax的Get请求整理 一.总结 1.Asp.Net WebApi默认不支持Get请求,需要在Action方法上指定[HttpGet], 除非Action ...

  10. 基于ASP.NET WebAPI OWIN实现Self-Host项目实战

    引用 寄宿ASP.NET Web API 不一定需要IIS 的支持,我们可以采用Self Host 的方式使用任意类型的应用程序(控制台.Windows Forms 应用.WPF 应用甚至是Windo ...

随机推荐

  1. CIPAddressCtrl控件

    CIPAddressCtrl m_ipCtrl; 1.获取控件IP值 int GetAddress(byte& byteFirst, byte& byteTwo, byte& ...

  2. UVA 305 Joseph (约瑟夫环 打表)

     Joseph  The Joseph's problem is notoriously known. For those who are not familiar with the original ...

  3. JSP中取COOKIE中指定值得方法【转载】

    Cookie cookies[]=request.getCookies(); //读出用户硬盘上的Cookie,并将所有的Cookie放到一个cookie对象数组里面 Cookie sCookie=n ...

  4. cxf所用的lib

    cxf_lib

  5. php cgi 与 cli 区别

    以CGI方式运行时,web server将用户请求以消息的方式转交给PHP独立进程,PHP与web服务之间无从属关系:CLI则是命令行接口,用于在操作系统命令行模式下执行PHP,比如可以直接在win的 ...

  6. 微信支付开发+{ping++}微信支付托管

    ------------------------微信支付接口------------------------------- 微信支付开发并没有想象中的那么难,主要是微信提供了sdk. 微信公众号必须是 ...

  7. Ubuntu下Git服务端搭建

    1安装git $ sudo add-apt-repository ppa:git-core/ppa $ sudo apt-get update $ sudo apt-get install git 测 ...

  8. Android Timer的使用

    1:服务端使用PHP <?php echo date('Y-m-d H:i:s'); ?> 2:activity_main.xml <RelativeLayout xmlns:and ...

  9. ural 1333 Genie Bomber 2

    #include <cstdio> #include <cstring> #include <algorithm> #define maxn 200 using n ...

  10. squid+stunnel+用户密码认证的三种玩法

    没办法,应用越来越深入,就会越来越多要求. squid+stunnel+用户密码认证的场景至少以下三个,我会遇到. 1,标准玩法 在服务器上建一个SQUID,加密码认证,然后,其它人通过它上网.(不要 ...