开发者社区> 技术小甜> 正文

asp.net core下的RequestBody和RequestForm提交

简介:
+关注继续查看

最近在开发asp.net core时,遇到RequestBody和RequestForm数据提交方式,整理了一下,把结果记录下来。

对于RequestForm一般是接收表单的信息,而RequestBody通常是来接收较为复杂的数据(集合或杂杂对象)在asp.net中很容易区分接收,在action用[FromBody]和[FromForm]来标识就可以,对于客户端来说,区别就要大一些,这里记录两种方式,RestSharp和JQuery的ajax请求两种方式。

  1. 服务端

1
2
3
4
5
6
7
8
9
10
11
[HttpPost("additem")]
public IActionResult AddItem([FromBody]Item item)
{
    return new JsonResult(new { Result = 0, Message = "添加成功",Content=item.ToString() },new Newtonsoft.Json.JsonSerializerSettings ());
}
  
[HttpPost("additem")]
public IActionResult AddItem([FromForm]Item item)
{
    return new JsonResult(new { Result = 0, Message = "添加成功" ,Content=item.ToString()},new Newtonsoft.Json.JsonSerializerSettings ());
}

 

  1. RestSharp方式

    在项目中,用Nuget安装RestSharp类库,我用的是v105.2.3。

    用RestSharp提交RequestBody和RequestForm相对简单,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using System;using RestSharp;namespace RestSharpTest
{
    class Program    {
        static void Main(string[] args)
        {
            while (true)
            {
                var client = new RestClient("http://localhost:5000");
                var request = new RestRequest("additem", Method.POST);
                request.RequestFormat = DataFormat.Json;
                Console.WriteLine("1、RequestBody  2、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;
                }
                var response = client.Execute(request);
                Console.WriteLine(response.Content);
               
            }
  
        }
    }
}


  1. JQuery中用ajax请求

    如果用jquery访问别的web,设置跨域访问(关于跨域访问,查看http://www.cnblogs.com/xishuai/p/aspnet-core-cors.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>    <title></title>
    <meta charset="utf-8" />    <script src="bower_components/jquery/dist/jquery.min.js"></script></head><body>    <input id="sava1" value="保存RequestForm" type="button"/>    <input id="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-23 12:12:12" }),
                success: function (result) {
                    alert(result.Message + result.Content);
                }
            });
  
        })
    </script></body></html>


一般情况下,web api是用[FromBody],因为一般web api是供app或DeskTop的应用访问,web页面请求用[FromForm],一般情况下web页面是通过表单向后台提交信息。


















本文转自桂素伟51CTO博客,原文链接:http://blog.51cto.com/axzxs/1894072,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
基于 Debain11 构建 asp.net core 6.x 的基础运行时镜像
此处我们基于 Debian11 的 Linux 发行版,实现目标是编写 Dockerfile 构建 asp.net core 6.x 框架的 runtime 基础镜像。在 Docker 容器化运行环境中,应用程序运行中存在异常情况,此时可以借助一些常用的基础工具方便排查,因此我们需要在 asp.net core 6.x runtime 基础镜像添加 linux 环境常用的...
69 0
7.3EF Core与ASP.NET Core集成
7.3EF Core与ASP.NET Core集成
31 0
7.2配置系统与ASP.NET Core集成
7.2配置系统与ASP.NET Core集成
16 0
6.3 ASP.NET Core Web API技术选择
ASP.NET Core Web API技术选择
34 0
6.1 ASP.NET Core Web 入门
ASP.NET Core中,严格来讲只有一个Asp.net Core MVC一个框架,Asp.net Core MVC既支持基于视图的MVC开发,也支持Web API和Razor Pages开发。
26 0
在 Asp.Net Core 中什么是认证和授权
认证(Authentication) 和 授权(Authorization)在 Asp.Net core 充当了两个不同的职责。有的老伙计在理解的时候还存在误解。本文我们将会通过一些简单的例子来说明这两个概念。
34 0
ASP.NET Core 源码解读
ASP.NET Core 源码解读
97 0
ASP.NET Core Web API 帮助页
ASP.NET Core Web API 帮助页
90 0
ASP.NET Core微服务(六)——Redis效率与sqlserver数据库对比
ASP.NET Core微服务(六)——Redis效率与sqlserver数据库对比
98 0
ASP.NET Core微服务(六)——【.Net Core操作redis】StackExchange.Redis
ASP.NET Core微服务(六)——【.Net Core操作redis】StackExchange.Redis
99 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载