Mvc Ajax提交多个checkbox,也说绑定和提交select
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的更多相关文章
- MVC Ajax.BeginForm重复提交解决方法
mvc使用MVC Ajax.BeginForm提交的时候有重复提交结果的时候检查相关js文件引用情况, 其中mvc4注意 1 2 3 4 @Scripts.Render("~/bundles ...
- Spring MVC Ajax 嵌套表单数据的提交
概述 在一些场景里,某个大表单里常常嵌套着一个或若干个小逻辑块,比如以下表单里"设计预审"中包括了一个子模块表单"拟定款项". 在这种情况下该怎么去设计实体类以 ...
- form表单提交数据,页面必定会刷新,ajax提交数据不会刷新,做到悄悄提交,多选删除,ajax提交实例
很多页面用到的模态对话框,如知明网站https://dig.chouti.com/的登录页都是模态对话框, 当点登录时,是用的ajax提交,因为输入错了信息,有返回消息,而页面没有刷新. jquery ...
- Spring MVC拦截器+注解方式实现防止表单重复提交
原理:在新建页面中Session保存token随机码,当保存时验证,通过后删除,当再次点击保存时由于服务器端的Session中已经不存在了,所有无法验证通过. 注,如果是集群的方式,则需要将token ...
- MVC Ajax Helper或jQuery异步方式加载部分视图
Model: namespace MvcApplication1.Models { public class Team { public string Preletter { get; set; } ...
- ajax+FormData+javascript实现无刷新表单信息提交
ajax+FormData+javascript实现无刷新表单信息提交 原理: dom收集表单信息,利用FormData快速收集表单信息 ,实例化表单数据对象 同时收集fm的表单域信息. var f ...
- MVC 常用扩展点:过滤器、模型绑定等
MVC 常用扩展点:过滤器.模型绑定等 一.过滤器(Filter) ASP.NET MVC中的每一个请求,都会分配给对应Controller(以下简称"控制器")下的特定Actio ...
- MySQL binlog 组提交与 XA(分布式事务、两阶段提交)【转】
概念: XA(分布式事务)规范主要定义了(全局)事务管理器(TM: Transaction Manager)和(局部)资源管理器(RM: Resource Manager)之间的接口.XA为了实现分布 ...
- java_客户端防表单重复提交和服务器端session防表单重复提交
用户输入FormServlet链接 FormServlet-〉form.jsp->DoFormServlet FormServlet:产生token,放在session中 form.jsp:hi ...
- 用HTTP状态码实现提交表单后刷新页面不重复提交
正常情况下,表单提交后如果用户刷新页面会重复提交表单,有些情况下我们不希望表单重复提交,利用HTTP协议中的307状态码重定向页面可以实现这个目的.实例如下: 表单页面代码: <form act ...
随机推荐
- Jmeter接口压力测试
SOAP百科:Soap简单对象访问协议,是交换数据的一种协议规范,是一种轻量的.简单的.基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息.webServi ...
- struct 和typedef struct的区别
和int char一样struct也是一种数据类型,也可以声明变量--结构变量. 定义结构体变量的一般格式为: struct 结构名 { 类型 变量名; 类型 变量名; ... }结构变量; 另一种常 ...
- mysql语句sum求和为null的问题
select sum(price) as price from order where status='SUCCESS'; 如果price对应的所有的值为0,那么算出来的和为null: 可以采用ifn ...
- 手动编写JQUERY插件
就拿一个简单的示例来说,鼠标点击输入框,提示文字消息,鼠标移开,再显示提示文字. <script type="text/javascript"> //编写插件 (fun ...
- bing翻译API调用方法
概述 前一段时间,遇到一个需求,需要对文章进行翻译,由于客户公司员工有国内的人员,也有国外的人员,为了照顾国外的同事,客户提出,当用户在手机端发布帖子,需要同时把帖子的内容翻译成英文,方便用户阅读.于 ...
- 基于微软开发平台构建和使用私有NuGet托管库
本篇blog包含使用TFS2017,VS2017等平台和工具搭建和使用NuGet库等基本过程,为团体提供更加自动化和高效的研发活动支持. 作为以产品线或者以专属业务为扩展的项目类型的软件研发团体,都会 ...
- shell中的条件表达式
条件表达式返回的结果都为布尔型 真为1,假为0 条件测试的表达式 [expression] [[expression]] test expression 这三种条件表达式的效果是一样的 比较符 整数比 ...
- git pull错误记录及解决
执行操作:$ git pull 返回错误: error: RPC failed; result=7, HTTP code = 0 fatal: The remote and hung up unexp ...
- Tomcat源码分析(一)
这段时间简单的看了一下Tomcat的源码,在这里做个笔记! 1. tomcat 架构图 Catalina: tomcat的顶级容器,main()方法中就是通过,创建Catalina 对象实例,来启 ...
- file_get_contents和curl对于post方式的解决办法
post方式解决办法 其实很简单,我们只要仔细看看就知道了... file_get_contents: $content=$_POST['content'];$access_token=$_POST[ ...