参看链接:https://www.cnblogs.com/umlzhang/p/3654486.html

我这里总结一下,Action的参数的来源比较多

1.url

2.路由设定

3.post中的内容被自动映射(form格式,json格式都可以)

如果参数的类型是可为空类型,那么当不传递这个参数时,也能正确执行函数。但是,如果是int 这种,不能为空的类型,就会出现调用错误。这时候,需要使用int ? 类型。

对于post 请求 ,action 的参数自动映射与 request 的content-type 密切相关, 但是无论哪种post请求,request的InputStream属性一定保存着post过来的数据。

例子1:

post 一个 content-type 为 application/json 的json到服务器端,json内容如下:

{"name":"aaaa","Meetings":"","ImageBase64":"BBBCCCCC"}

服务器结果如下:

可以看到,json中的key都被映射到了同名变量或属性中。hcpDto的 Name  和 name 的值,都来自json中的name,忽略大小写区别。可以简单地理解成,只要名称和类型允许,就会进行相应的映射。

但是用在request 的 form属性和 params属性中,没有出现相应的值,参见下图

例子1.2,如果post一个复杂的json对象

{"HCPInsertDto":{"name":"aaaa","Meetings":""},"ImageBase64":"BBBCCCCC"}

结果如下图:

name的值无法取到,也就是说,默认是无法解析json中第二层的属性。那么为什么有的框架可以做到多层json的解析呢?????????????????????

例子2:

post 一个 content-type 为 application/x-www-form-urlencoded的数据到服务器,数据内容如下:

name=aaa&imagebase64=bbbbbbbb

服务器截图如下:

同时可以注意到,以 application/x-www-form-urlencoded 形式提交的数据,可以在request对象中的 form属性和params属性中都有值:

例子3

post 一个 content-type 为 multipart/form-data 的

首先,这个post的data格式,和 content-type的内容有些特殊,最好使用一个form表单构建,再粘贴到 restful client 里实验,截图如下:

结果如下:

可以看到,参数可以正确映射

 例子4 在一些ios之类的前台库里,可以传递一个数组,我用restful client模拟了一下这种情况

代码如下:

------WebKitFormBoundaryTmMzofe8Ic12TbyA
Content-Disposition:form-data;name="attendees[]" aaaa
------WebKitFormBoundaryTmMzofe8Ic12TbyA
Content-Disposition:form-data;name="attendees[]" bbbb
------WebKitFormBoundaryTmMzofe8Ic12TbyA--

多次传递同样的name属性,后台就会把这些数据处理为一个数组。注意,这里的[] 符号可以省略,server同样可以解析。

解析结果如下:

ASP Action函数 如何接收client传递的数据(编辑中。。。)的更多相关文章

  1. mvc控制器接收ajax传送的数据

    视图层中ajax传数据 $.ajax({ type: "post",//提交方式 data: { complay_arry: complay_arry, site_arry: si ...

  2. ASP.NET MVC 入门7、Hellper与数据的提交与绑定

    View视图 我们可以手写HTML代码, 也可以采用基类提供的Helper类完成HTM代码. 示例: <%=Html.ActionLink("首页","index& ...

  3. EF5+MVC4系列(7) 后台SelectListItem传值给前台显示Select下拉框;后台Action接收浏览器传值的4种方式; 后台Action向前台View视图传递数据的四种方式(ViewDate,TempDate,ViewBag,Model (实际是ViewDate.Model传值))

    一:后台使用SelectListItem 传值给前台显示Select下拉框 我们先来看数据库的订单表,里面有3条订单,他们的用户id对应了 UserInfo用户表的数据,现在我们要做的是添加一个Ord ...

  4. MVC扩展ModelBinder使类型为DateTime的Action参数可以接收日期格式的字符串

    原文:MVC扩展ModelBinder使类型为DateTime的Action参数可以接收日期格式的字符串 如何让视图通过某种途径,把符合日期格式的字符串放到路由中,再传递给类型为DateTime的控制 ...

  5. 总结ASP.NET MVC视图页使用jQuery传递异步数据的几种方式

    在ASP.NET MVC的视图页向控制器传递异步数据,可能是数组,JavaScript对象,json,表单数据,等等. 关于数据,JavaScript对象有时候和json长得一模一样,有么有? var ...

  6. ASP.NET MVC3入门教程之参数(数据)传递

    本文转载自:http://www.youarebug.com/forum.php?mod=viewthread&tid=98&extra=page%3D1 MVC模式的参数(数据)传递 ...

  7. 【ASP.NET MVC系列】浅谈ASP.NET MVC 视图与控制器传递数据

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  8. Asp.net在页面间传递大量数据(数据表)建议采用的方法

    能让数据在 两个不同站点之间传递吗? 我现在是想A站点的数据 传递到B站点....... 建议使用Cache (1)不太影响程序性能不太可能,你都说了,是大量数据.我举个例子,你是从A.aspx传到B ...

  9. C++指针作为函数的参数进行传递时注意的问题

    应注意问题: 当指针作为函数的参数进行传递的时候,本质上还是进行的"值传递",也就是复制了一个新的指向该地址的指针变量. 只有在被调函数中,对指针进行引用操作,才可以达到不需要返回 ...

随机推荐

  1. Linux下ansible的group模块

    一.概述 group 模块可以帮助我们管理远程主机上的组. 二.常用参数 name参数:必须参数,用于指定要操作的组名称. state参数:用于指定组的状态,两个值可选,present,absent, ...

  2. JS JSON对象相关

    1.多对象合并 将2个或2个以上对象(object{....})中的属性进行合并,即最后合并为一个object{.....} 解决办法:Object.assign 方法 var form = {nam ...

  3. ThunderBird配置邮箱后无法发送邮件

    今天遇到的问题是在ThunderBird配置邮箱后无法发送邮件.用户名和密码都验证过去了.但一直无法发送邮件. 1.首先imap 和smtp 服务器都是通的. telnet imap.base-fx. ...

  4. CRT工具远程登陆Google Cloud远程ssh登录方法

    首先使用Google Cloud SSH连接上去:1.切换到 rootsudo -i12.编辑ssh配置文件vi /etc/ssh/sshd_config13.修改以下内容即可PermitRootLo ...

  5. sprigboot recontroller 是responsebody与controller结合 这样 就使每个方法默认返回json

    sprigboot   recontroller 是responsebody与controller结合 这样 就使每个方法默认返回json

  6. Java 中数字和字符串拼接的问题

    注意细节 字符是char 类型,字符串是String 类型1.数字拼接char,得到的还是数字,相当于和它的ASCII编码相加(如果定义成String 会编译错误)2.数字拼接String,得到的是S ...

  7. 计算指定文件的MD5值

    /// <summary> /// 计算指定文件的MD5值 /// </summary> /// <param name="fileName"> ...

  8. ubuntu 默认 root 密码

    安装完Ubuntu后忽然意识到没有设置root密码,不知道密码自然就无法进入根用户下.到网上搜了一下,原来是这麽回事.Ubuntu的默认root密码是随机的,即每次开机都有一个新的root密码.我们可 ...

  9. js重点--匿名函数

    推荐博客:https://www.cnblogs.com/pssp/p/5216668.html 函数是必须要有函数名的,不然没有办法找到它,使用它. 如果没有名字必须要有一个依附体,如:将这个匿名函 ...

  10. Exp5 MSF基础应用

    一.实践内容 1.主动攻击实践 [1]MS08-067 MS08-067 漏洞是2008 年年底爆出的一个特大漏洞,存在于当时的所有微软系统,杀伤力超强.其原理是攻击者利用受害主机默认开放的SMB 服 ...