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. Integer和int的详细比较(转)

    Integer与int的区别我们耳熟详的有两点:1.Integer是int的包装类.2.Integer的默认初始值是null,而int的默认初试值是0. 下面通过代码进行详细比较. public cl ...

  2. javascript中的screen对象

    screen对象通常包含下列属性(许多浏览器都加入了自己的属性): 1.availHeight :  窗口可以使用的屏幕的高度(以像素计)其中包括操作系统元素(如window工具栏)需要的空间. 2. ...

  3. PHPCMSV9 采集网址后,再采集内容,报错:“采集采集内容 没有找到网址列表,请先进行网址采集”

    解决方法:直接清除v9_collection_history 表里的内容.

  4. 设置 cell点击 背景色

    //设置 cell点击 背景色 cell.selectionStyle = UITableViewCellSelectionStyleDefault; cell.selectedBackgroundV ...

  5. Swift— Swift编码规范之命名规范-备

    程序代码中到处都是自己定义的名字,取一个有样并且符合规范的名字非常重要. 命名方法很多,但是比较有名的,广泛接受命名法有: 匈牙利命名,一般只是命名变量,原则是:变量名=类型前缀+描述,如bFoo表示 ...

  6. 关于Bayes网络新解

    经典贝叶斯网络 贝叶斯分类器的分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类.目前研究较多的贝叶斯分类器主要有四种 ...

  7. NGUI类之间的关系和架构

    NGUI Drawcall 1.使用同一个altals的元素尽量放在同一个UIPanel下面,在NGUI中,它消耗的drawcall是以每个Panel为独立计算单位进行计算的. 2.如果一个UIPan ...

  8. Boost 和 STL 相比有哪些优势和劣势?

    1. 在设计原则上,STL和Boost大体统一因为STL和Boost基本上都是标准委员会那批人在策划.审核和维护,所以口味上是相对接近的.但是因为Boost并不在标准中,或者说是下一代标准的试验场,所 ...

  9. Basefragment的封装使用

    1.前言 封装作为面向对象的三大特性之一,在我们平时的coding过程用的那是非常的多的.大多数时候,我们可以根据封装情况评判代码的质量水平. 本文主要讲解的是fragment的封装.大体上,在项目的 ...

  10. 【疑难杂症】xmind启动后,自动退出的问题

    xmind安装一段时间后,就会出现一启动,就自动退出的情况.卸载重装也无法解决,在试过网上的各种方法后,发现这个方法最凑效. 打开xmind.ini(安装目录下),删除以下几行,保存配置文件,重启即可 ...