asp.net core下的RequestBody和RequestForm提交
最近在开发asp.net core时,遇到RequestBody和RequestForm数据提交方式,整理了一下,把结果记录下来。
对于RequestForm一般是接收表单的信息,而RequestBody通常是来接收较为复杂的数据(集合或杂杂对象)在asp.net中很容易区分接收,在action用[FromBody]和[FromForm]来标识就可以,对于客户端来说,区别就要大一些,这里记录两种方式,RestSharp和JQuery的ajax请求两种方式。
服务端
[HttpPost("additem")]publicIActionResultAddItem([FromBody]Itemitem){returnnewJsonResult(new{Result=0,Message="添加成功",Content=item.ToString()},newNewtonsoft.Json.JsonSerializerSettings());}[HttpPost("additem")]publicIActionResultAddItem([FromForm]Itemitem){returnnewJsonResult(new{Result=0,Message="添加成功",Content=item.ToString()},newNewtonsoft.Json.JsonSerializerSettings());}
RestSharp方式
在项目中,用Nuget安装RestSharp类库,我用的是v105.2.3。
用RestSharp提交RequestBody和RequestForm相对简单,代码如下:
usingSystem;usingRestSharp;namespaceRestSharpTest{classProgram{staticvoidMain(string[]args){while(true){varclient=newRestClient("http://localhost:5000");varrequest=newRestRequest("additem",Method.POST);request.RequestFormat=DataFormat.Json;Console.WriteLine("1、RequestBody2、RequestForm");switch(Console.ReadLine()){case"1":request.AddJsonBody(new{ID=111,Name="张三",Birthday=DateTime.Now});break;case"2":request.AddObject(new{ID=111,Name="张三",Birthday=DateTime.Now});break;}varresponse=client.Execute(request);Console.WriteLine(response.Content);}}}}
JQuery中用ajax请求
如果用jquery访问别的web,设置跨域访问(关于跨域访问,查看http://www.cnblogs.com/xishuai/p/aspnet-core-cors.html)
<!DOCTYPEhtml><html><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title></title><metacharset="utf-8"/><scriptsrc="bower_components/jquery/dist/jquery.min.js"></script></head><body><inputid="sava1"value="保存RequestForm"type="button"/><inputid="sava2"value="保存RequestBody"type="button"/><script>$("#sava1").click(function(){$.post("http://localhost:5000/additem",{ID:112,Name:"李四",Birthday:"2017-01-23"},function(result){alert(result.Message+result.Content);},"json")})$("#sava2").click(function(){$.ajax({type:"POST",url:"http://localhost:5000/additem",contentType:"application/json",dataType:"json",async:true,data:JSON.stringify({"ID":112,"Name":"李四","Birthday":"2017-01-2312:12:12"}),success:function(result){alert(result.Message+result.Content);}});})</script></body></html>
一般情况下,web api是用[FromBody],因为一般web api是供app或DeskTop的应用访问,web页面请求用[FromForm],一般情况下web页面是通过表单向后台提交信息。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。