MVC接收列表参数
ASP.NET MVC 表单参数如果有列表时要怎么写呢.
虽然很久不用MVC了,但几乎每次遇到一次就要研究一下.然后又忘了.
其实也明白这是未完全弄清楚表单参数的传递形式,如果明白了,就知道MVC为什么要这样接收了..MVC这种方式肯定不是随便想出来的,而是遵守参数传递的形式而定的
// action 参数 u 这个参数有一个属性,值是一个列表,
pulic actionreault method(user u)
{
}
class user{
public string name {get;set;}
public string[] friends {get;set;} // 列表属性
}
// 脚本 如何传这个参数
var para={};
para.name='博客员';
para.friends[0]='MS'
para.friends[1]='asp.net'
// 注意这个写法, friends属性对应实体上的friends属性,当然了.这是必须的,
由于friends是个数组,所以脚本参数写成 friends[0]=xx friends[1]=xx 这个意思就是数组的第0个值,第1个值 ....
那怎么为什么直接写成para.friends=['MS','asp.net']时,action会接收不到呢?
这就是http参数基础格式, key=value 假如一个GET请求 , friends=MS&friends=asp.net&K=V... 这个键重复了, 服务端接收时可能会将相同的键弄成一个数组
假如是个POST请求,传一个JSON对象,那键不能重复.ASP.MVC采取了键名[下标]的形式,当做 一个数组.可以解析到实体的对应名称的数组对象上
// 具体写法
http传参数的格式对于服务端来讲,都是那样的K=V.但是不同的服务端解析的方式可能不相同.
例如ASP.NET MVC服务端接收一个数组参数,属性名字叫 users 那么请求时传入的json参数写法是
json['users[0]'] = 'user1';
json['users[1]'] = 'user2';
....
json.['users[n]']='usern';
users[0]这个键名分为 users [0] 两部分, users表示服务端接收时使用的属性名, [0]表示users的下标为0的值
不能写成 json.users=['user1','user2'] ,这样接收不到.
// 对象数组参数写法
class user{ Name ; Sex}
如果数组不是简单的string[]或者int[],而是一个对象数组 user[] ,假如参数名还是叫 users,那么写法如下
json['users[0].Name'] = 'name'
json['users[0].Sex'] = '男'
'users[0].Name' 这个键名分为 users [0] Name ,表示 users这个属性的第0个元素的Name属性的值
// 其它解决办法
如果不希望理解这种搞法,认为写起来复杂,不符合JSON键值对的特点,那不必这样传参数
可以将参数按原始JSON组装好,然后再使用JSON3.js,这个库弄成JSON字符串作为一个参数传递.服务端收到之后,使用newtonjson解析就行了
MVC接收列表参数的更多相关文章
- 【spring mvc】后台spring mvc接收List参数报错如下:org.springframework.beans.BeanInstantiationException: Failed to instantiate [java.util.List]: Specified class is an interface
后台spring mvc接收List参数报错如下:org.springframework.beans.BeanInstantiationException: Failed to instantiate ...
- 如何让Spring MVC接收的参数可以转换为java对象
场景: web.xml中增加了一个DispatcherServlet配置,并在同级目录下添加了**-servlert.xml文件,搭建起了一个spring mvc的restful访问接口. 问题描述: ...
- Spring MVC 接收前端参数的方式
方式一: 普通方式接收 1 @RequestMapping("/index") 2 public String getUserName(String username) { 3 S ...
- spring mvc接收http参数
1.http协议携带参数,无外乎两个三个存储地点:1.url上 ,2.header里 3.body里. 2.get请求是没有body的,数据全都放在url上,以?xx&xxx形式.注:get请 ...
- spring mvc 接收 put参数
web.xml中: <!-- 用户put提交参数 --> <filter> <filter-name>HttpMethodFilter</filter-nam ...
- ASP.NET MVC 后台接收集合参数和 jquery ajax 传值
MVC 接收参数数组(集合) 示例样本: public class Person { public string FirstName { get; set; } publi ...
- 使用Spring mvc接收整个url地址及参数时注意事项
使用Spring mvc接收整个url地址及参数时注意事项:url= http://baidu?oid=9525c1f2b2cd45019b30a37bead6ebbb&td=2015-08- ...
- 【spring mvc】spring mvc POST方式接收单个字符串参数,不加注解,接收到的值为null,加上@RequestBody,接收到{"uid":"品牌分类大”},加上@RequestParam报错 ---- GET方式接收单个参数的方法
spring mvc POST方式 接收单个参数,不加任何注解,参数名对应,接收到的值为null spring mvc POST方式 接收单个参数,加上@RequestBody,接收到参数格式:{&q ...
- Spring MVC(八)--控制器接受简单列表参数
有些场景下需要向后台传递一个数组,比如批量删除传多个ID的情况,可以使用数组传递,数组中的ID元素为简单类型,即基本类型. 现在我的测试场景是:要从数据库中查询minId<id<maxId ...
随机推荐
- jabRef里引用的相邻同名作者变横线
用jabRef引用同名作者的文章时,出现了第二个文章的作者变成了横线,在搜了相关资料后,发现作如下修改可避免: 1.在.bib文件中加入开关,并修改默认配置: @IEEEtranBSTCTL{IEEE ...
- LZO
LZO 是致力于解压速度的一种数据压缩算法,LZO 是 Lempel-Ziv-Oberhumer 的缩写.这个算法是无损算法,参考实现程序是线程安全的. 实现它的一个自由软件工具是lzop.最初的库是 ...
- Requires: libc.so.6(GLIBC_2.14)(64bit)
centos6 - CentOS 6 - libc.so.6(GLIBC_2.14)(64bit) is needed by - Server Faulthttps://serverfault.com ...
- Linux reboot与init 6区别
Reboot与init 6的区别 - flyingcloud_2008的专栏 - CSDN博客https://blog.csdn.net/flyingcloud_2008/article/detail ...
- Docker 安装和配置
#centos 6 需要另外安装 yum install lxc libcgroup device-mapper-ecent-libs 推荐centos7 安装深事#centos 7 直接安装就好yu ...
- Oracle 创建外部表
Oracle 外部表能迅速的将海量的数据导入到数据库里面,外部表的创建使用步骤如下: 1 创建一个Directory:必须用sys用户创建,用户存放外部数据文件. create directory D ...
- [转帖]SAP一句话入门:Plant Maintenance
SAP一句话入门:Plant Maintenance http://blog.vsharing.com/MilesForce/A618273.html PM就是Plant Maintenance(本文 ...
- python爬虫之scrapy文件下载
我们在写普通脚本的时候,从一个网站拿到一个文件的下载url,然后下载,直接将数据写入文件或者保存下来,但是这个需要我们自己一点一点的写出来,而且反复利用率并不高,为了不重复造轮子,scrapy提供很流 ...
- DButils实现数据库表下划线转bean中驼峰格式
准备: QueryRunner queryRunner = new QueryRunner();//开启下划线->驼峰转换所用BeanProcessor bean = new GenerousB ...
- linux下ssh无法连接的原因
在虚拟机上安装了ubuntu16.04 server,用本机 ssh 连接的时候 无法连接上: 忽然想起在安装的时候有个openssh好像没有勾选,所以在虚拟机上 apt install openss ...