Ajax Mvc的 checkbox

后端必须是List<T> ,T是ID类型,一般int 或guid

模型必须初始化List<T> 防止客户端没有提交任何值时空引用的问题,如果你喜欢每次都去判断下,那也不所谓。

class model{

public model(){

selectedValues = new List<int>(); //很重要!!!

}

public List<int> selectedValues{get;set;}

}

不能使用T[]数组,因为数组是只读的,没法Add。反驳我?走开,老子没说数组元素。

非逗号分隔传递多值的方法,就是带上索引。必须从0开始。

解决方案如下

<checkbox name="selectedValues[x]" value='1'>

<checkbox name="selectedValues[x]" value='1'>

<checkbox name="selectedValues[x]" value='1'>

<checkbox name="selectedValues[x]" value='1'>

<checkbox name="selectedValues[x]" value='1'>

把选中的处理好即可

mdcs.badValues = ['-1', '', '@Guid.Empty'];
mdcs.serializeForm = function (form) {
var array = $(form).serializeArray();
var pdata = {};
var indexer = {};
for (var i = ; i < array.length; i++) {
var index = array[i].name.indexOf('[');
if (index != -) {
//exclude invalid data
var isBadValue = false;
for (var j = ; j < mdcs.badValues.length; j++) {
if (mdcs.badValues[j] == array[i].value) {
isBadValue = true;
break;
}
}
if (isBadValue)
continue;
var name = array[i].name.substring(, index);
if (indexer[name] == undefined)
indexer[name] = ;
else {
indexer[name]++;
}
name = name + '[' + indexer[name] + ']';
pdata[name] = array[i].value;
}
else {
//exclude select value -1 and 0
if ((array[i].value == '-1' || array[i].value == '') && $('select[name=' + array[i].name + ']').length == ) {
continue;
}
pdata[array[i].name] = array[i].value;
}
}
return pdata;
};

select option

不建议使用-1或者0来表示未选择的值,使用空字符串即可。服务端需要使用可空类型。比如 int? provinceID。没选就是没值。provinceID.HasValue就是false

附赠一个坑的解决办法。

看请求传了值,服务端模型就是取不到。但是从Request.Params或者Request.Forms里能取到。

请检查属性set 是否是internal set,右键自动生成的属性就这德行。导致模型属性无法绑定。

Mvc Ajax提交多个checkbox,也说绑定和提交select的更多相关文章

  1. MVC Ajax.BeginForm重复提交解决方法

    mvc使用MVC Ajax.BeginForm提交的时候有重复提交结果的时候检查相关js文件引用情况, 其中mvc4注意 1 2 3 4 @Scripts.Render("~/bundles ...

  2. Spring MVC Ajax 嵌套表单数据的提交

    概述 在一些场景里,某个大表单里常常嵌套着一个或若干个小逻辑块,比如以下表单里"设计预审"中包括了一个子模块表单"拟定款项". 在这种情况下该怎么去设计实体类以 ...

  3. form表单提交数据,页面必定会刷新,ajax提交数据不会刷新,做到悄悄提交,多选删除,ajax提交实例

    很多页面用到的模态对话框,如知明网站https://dig.chouti.com/的登录页都是模态对话框, 当点登录时,是用的ajax提交,因为输入错了信息,有返回消息,而页面没有刷新. jquery ...

  4. Spring MVC拦截器+注解方式实现防止表单重复提交

    原理:在新建页面中Session保存token随机码,当保存时验证,通过后删除,当再次点击保存时由于服务器端的Session中已经不存在了,所有无法验证通过. 注,如果是集群的方式,则需要将token ...

  5. MVC Ajax Helper或jQuery异步方式加载部分视图

    Model: namespace MvcApplication1.Models { public class Team { public string Preletter { get; set; } ...

  6. ajax+FormData+javascript实现无刷新表单信息提交

    ajax+FormData+javascript实现无刷新表单信息提交 原理: dom收集表单信息,利用FormData快速收集表单信息  ,实例化表单数据对象 同时收集fm的表单域信息. var f ...

  7. MVC 常用扩展点:过滤器、模型绑定等

    MVC 常用扩展点:过滤器.模型绑定等 一.过滤器(Filter) ASP.NET MVC中的每一个请求,都会分配给对应Controller(以下简称"控制器")下的特定Actio ...

  8. MySQL binlog 组提交与 XA(分布式事务、两阶段提交)【转】

    概念: XA(分布式事务)规范主要定义了(全局)事务管理器(TM: Transaction Manager)和(局部)资源管理器(RM: Resource Manager)之间的接口.XA为了实现分布 ...

  9. java_客户端防表单重复提交和服务器端session防表单重复提交

    用户输入FormServlet链接 FormServlet-〉form.jsp->DoFormServlet FormServlet:产生token,放在session中 form.jsp:hi ...

  10. 用HTTP状态码实现提交表单后刷新页面不重复提交

    正常情况下,表单提交后如果用户刷新页面会重复提交表单,有些情况下我们不希望表单重复提交,利用HTTP协议中的307状态码重定向页面可以实现这个目的.实例如下: 表单页面代码: <form act ...

随机推荐

  1. MP3 信息读取

    MP3 信息读取 运行环境:Window7 64bit,.NetFramework4.61,C# 7.0: 编者:乌龙哈里 2017-03-13 参考: MP3-wikipedia ID3v1 MPE ...

  2. js闭包深度讲解

    js的闭包是学习js过程中的重点,但是不得不说也是一个难点呀,其涉及到了js中的很多概念.我在学习js中也遇到了很多问题,这篇文章算是一个对闭包的总结,文章主要内容为闭包的基本知识点与对其理解上的一些 ...

  3. Apache Flume日志收集系统简介

    Apache Flume是一个分布式.可靠.可用的系统,用于从大量不同的源有效地收集.聚合.移动大量日志数据进行集中式数据存储. Flume简介 Flume的核心是Agent,Agent中包含Sour ...

  4. Android开发之NavigationView的使用

    NavigationView主要是和DrawerLayout框架结合使用,来完成抽屉导航实现侧边栏 引用一段官方文档的示例代码 <android.support.v4.widget.Drawer ...

  5. java学习笔记----数据类型,变量,常量

    一.数据类型 1.基本类型(8种,又称内置数据类型).6种数字类型(byte,short,int,long,float,double),一种字符型(char),一种布尔类型(boolean). byt ...

  6. iOS开发之UIApplication和delegate

    1.概述 所有的移动操作系统都有个致命的缺点:app很容易受到打扰.比如一个来电或者锁屏会导致app进入后台甚至被终止. 还有很多其它类似的情况会导致app受到干扰,在app受到干扰时,会产生一些系统 ...

  7. Nginx + ngx_lua安装测试【CentOs下】

          最近打算搞搞nginx,扒着各位先驱的文章自己进行测试下,中间过程也是错误不断,记录一下,以备使用.       nginx的安装挺简单的,主要还是研究下一些第三方的模块,首先想试下初始化 ...

  8. javaWEB与cookie

    Cookie1. Http协议与Cookie(了解)  * Cookie是HTTP协议制定的!先由服务器保存Cookie到浏览器,再下次浏览器请求服务器时把上一次请求得到Cookie再归还给服务器  ...

  9. Laravel Session 遇到的坑

    这两天遇到了一个很奇怪的问题,更新session ,session的值不变.经过一番追查,终于找到问题,并搞明白了原理.写这篇博客记录下. 框架版本 Laravel 5.4 问题 先来描述下问题,我在 ...

  10. python 之tornado 入门

    #!/usr/bin/env python # -*- coding:utf-8 -*- # --------------------------------------- # email : gen ...