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解析就行了

var para={para:JSON.stringify(json)}
$.post(para);
*********************
var json=request.form.get("para");
Newtonsoft.Json.JsonConvert.DeserializeObject<Users>(json);

MVC接收列表参数的更多相关文章

  1. 【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 ...

  2. 如何让Spring MVC接收的参数可以转换为java对象

    场景: web.xml中增加了一个DispatcherServlet配置,并在同级目录下添加了**-servlert.xml文件,搭建起了一个spring mvc的restful访问接口. 问题描述: ...

  3. Spring MVC 接收前端参数的方式

    方式一: 普通方式接收 1 @RequestMapping("/index") 2 public String getUserName(String username) { 3 S ...

  4. spring mvc接收http参数

    1.http协议携带参数,无外乎两个三个存储地点:1.url上 ,2.header里 3.body里. 2.get请求是没有body的,数据全都放在url上,以?xx&xxx形式.注:get请 ...

  5. spring mvc 接收 put参数

    web.xml中: <!-- 用户put提交参数 --> <filter> <filter-name>HttpMethodFilter</filter-nam ...

  6. ASP.NET MVC 后台接收集合参数和 jquery ajax 传值

    MVC 接收参数数组(集合)   示例样本:   public class Person {      public string FirstName { get; set; }      publi ...

  7. 使用Spring mvc接收整个url地址及参数时注意事项

    使用Spring mvc接收整个url地址及参数时注意事项:url= http://baidu?oid=9525c1f2b2cd45019b30a37bead6ebbb&td=2015-08- ...

  8. 【spring mvc】spring mvc POST方式接收单个字符串参数,不加注解,接收到的值为null,加上@RequestBody,接收到{"uid":"品牌分类大”},加上@RequestParam报错 ---- GET方式接收单个参数的方法

    spring mvc POST方式 接收单个参数,不加任何注解,参数名对应,接收到的值为null spring mvc POST方式 接收单个参数,加上@RequestBody,接收到参数格式:{&q ...

  9. Spring MVC(八)--控制器接受简单列表参数

    有些场景下需要向后台传递一个数组,比如批量删除传多个ID的情况,可以使用数组传递,数组中的ID元素为简单类型,即基本类型. 现在我的测试场景是:要从数据库中查询minId<id<maxId ...

随机推荐

  1. Vue基础(ES6)

      起步 1.扎实的HTML/CSS/Javascript基本功,这是前置条件. 2.不要用任何的构建项目工具,只用最简单的<script>,把教程里的例子模仿一遍,理解用法.不推荐上来就 ...

  2. php使用gd库输出中文内容的图片

    正如标题所说那样,本文只讨论输出内容全部为中文或者包含中文的情况.如果内容全是字母或者其他字符的话,可以参考这篇博客:生成验证码 问题 此处要注意,标题中为什么要区别windows和linux分别实现 ...

  3. Windows Docker 安装

    win7.win8 .win10等需要利用 docker toolbox 来安装,国内可以使用阿里云的镜像来下载,下载地址:http://mirrors.aliyun.com/docker-toolb ...

  4. Es6数值拓展

    Es6数值拓展 一,Number扩展 1,ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示. 将0b和0o前缀的字符串数值转为十进制,要使用Number方法 N ...

  5. Azure系列2.1.14 —— CopyState

    (小弟自学Azure,文中有不正确之处,请路过各位大神指正.) 网上azure的资料较少,尤其是API,全是英文的,中文资料更是少之又少.这次由于公司项目需要使用Azure,所以对Azure的一些学习 ...

  6. 过滤数组中的空数组array_filter()

    手册查询array_filter()的使用细节时,看到了:If no callback is supplied, all entries of input equal to FALSE (see co ...

  7. C# Note34: 异常机制相关小点

    1.使用throw和throw ex抛出异常的区别 通常,我们使用try/catch/finally语句块来捕获异常,那么在抛出异常的时候,使用throw和throw ex有什么区别呢? 假如,按顺序 ...

  8. MyBatis源码分析1 参数映射分析

    首先我们拿出之前的代码,在如图位置打上断点,开始调试 我们规定了一个mapper接口,而调用了mapper接口的getEmpByIdAndLastName,我们并没有实现这个接口,这是因为Mybati ...

  9. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

    今天服务器遇到了一个很熟悉的问题, 输入 #mysql -u root -p   ERROR 2002 (HY000):Can't connect to local MySQL server     ...

  10. Linux基础学习(14)--日志管理

    第十四章——日志管理 一.日志管理简介 1.日志服务: 2.常见日志的作用: 二. rsyslogd日志服务 1.日志文件格式: 2./etc/rsyslog.conf配置文件: 三.日志轮替 1.日 ...