再议ASP.NET MVC中CheckBoxList的验证
在ASP.NET MVC 4中谈到CheckBoxList,经常是与CheckBoxList
的显示以及验证有关。我在"MVC扩展生成CheckBoxList并水平排列"中通过扩展HtmlHelper
做到了水平或垂直显示CheckBoxList
。在"MVC生成CheckBoxList并对其验证"中,借助模版实现对一组CheckBoxList
的验证,但如果要对多组CheckBoxList
验证,这种方法也不是很好。
比如,在电商商品模块中,关于某个类别下会有多个属性,有些属性值是单选,用DropDownList
显示属性值;有些属性值是多选,用CheckBoxList
显示属性值。
有如下2组CheckBoxList
,我们要求每组至少选一项,否则报错:
如果不勾选任何选项点击"提交",2组CheckBoxList
后面都报错:
如果勾选1组的任意选项,1组的报错消失,并把1组的选中项显示到下方(通常要把选中项提交给服务端),2组的报错依然存在:
如果再勾选2组的任意选项,2组的报错也消失,并把2组的选中项显示到下方:
如果不勾选1组的任何选项,1组勾选项的文字在正下方消失,1组又出现报错:
总之,本篇的实例做到了:
1、保证每组的CheckBoxList中至少有一项被选中
2、把勾选项显示出来
其实,以上的验证和显示,完全借助jQuery实现!
在Home/Index.cshtml中,当点击提交按钮或勾选/取消勾选CheckBoxList
的选项,都执行相同的方法,那就是:遍历所有li中的所有CheckBox
,只要每组被勾选的CheckBox
数量为0就报错。
@{ViewBag.Title = "Index";Layout = "~/Views/Shared/_Layout.cshtml";}<ul id="props" style="list-style-type: none"><li>组1:<input type="checkbox" name="1" value="土豆" />土豆 <input type="checkbox" name="2" value="西红柿" />西红柿 <input type="checkbox" name="3" value="西瓜" />西瓜 <span class="err"></span></li><li>组2:<input type="checkbox" name="4" value="南瓜" />南瓜 <input type="checkbox" name="5" value="冬瓜" />冬瓜 <input type="checkbox" name="6" value="苦瓜" />苦瓜 <span class="err"></span></li></ul><input id="btnSubmit" type="submit" value="提交" /><ul id="result"></ul>@section scripts{<script src="~/Scripts/jquery-1.8.2.min.js"></script><script src="~/Scripts/jquery.validate.min.js"></script><script type="text/javascript">$(document).ready(function () {//点击提交按钮 每组checkboxlist组必须选择一项$('#btnSubmit').on("click", function () {checkCblist();});//勾选或取消勾选$('#props').on("change", "input[type=checkbox]", function () {checkCblist();//获取勾选值var temp = $(this).val();if ($(this).is(":checked")) {$('<li/>', { html: temp }).appendTo('#result');} else {$('#result li').filter(function () { return $.text([this]) === temp; }).remove();}});//检查每组CheckBoxList,如果没有一个选中,报错function checkCblist() {//遍历每组li下的checkboxlist,如果没有一个选中,报错$('#props li').each(function () {if ($(this).find("input:checked").length == 0) {$(this).find('.err').text("至少选择一项").css("color", "red");} else {$(this).find('.err').text("");}});}});</script>}
以上,
○ checkCblist
方法遍历每一个li
,如果每组CheckBoxList
被勾选的CheckBox
数量为0就显示错误信息。
○ 点击"提交按钮",触发checkCblist
方法。
○ 勾选或取消勾选也触发checkCblist
方法。而且如果勾选CheckBox
,就在下方显示CheckBox
的值,如果取消勾选CheckBox
就删除正下方CheckBox
的值。
○ filter
方法接收返回类型为bool的匿名函数参数,过滤出符合条件的元素。
再议ASP.NET MVC中CheckBoxList的验证的更多相关文章
- ASP.NET MVC中使用窗体验证出现上下文的模型在数据库创建后发生更改,导致调试失败(一)
在ASP.NET MVC中使用窗体验证.(首先要明白,验证逻辑是应该加在Model.View和Controller哪一个里面?由于Model的责任就是负责信息访问与商业逻辑验证的,所以我们把验证逻辑加 ...
- asp.net mvc 中的自定义验证(Custom Validation Attribute)
前言
- asp.net mvc中的后台验证
asp.net mvc的验证包含后台验证和前端验证.后台验证主要通过数据注解的形式实现对model中属性的验证,其验证过程发生在model绑定的过程中.前端验证是通过结合jquery.validate ...
- ASP.NET MVC中使用FluentValidation验证实体
1.FluentValidation介绍 FluentValidation是与ASP.NET DataAnnotataion Attribute验证实体不同的数据验证组件,提供了将实体与验证分离开来的 ...
- ASP.NET MVC中使用FluentValidation验证实体(转载)
1.FluentValidation介绍 FluentValidation是与ASP.NET DataAnnotataion Attribute验证实体不同的数据验证组件,提供了将实体与验证分离开来的 ...
- asp.net MVC 中 Session统一验证的方法
验证登录状态的方法有:1 进程外Session 2 方法过滤器(建一个类继承ActionFilterAttribute)然后给需要验证的方法或控制器加特性标签 3 :新建一个BaseContro ...
- ASP.NET MVC中商品模块小样
在前面的几篇文章中,已经在控制台和界面实现了属性值的笛卡尔乘积,这是商品模块中的一个难点.本篇就来实现在ASP.NET MVC4下商品模块的一个小样.与本篇相关的文章包括: 1.ASP.NET MVC ...
- ASP.NET MVC如何实现自定义验证(服务端验证+客户端验证)
ASP.NET MVC通过Model验证帮助我们很容易的实现对数据的验证,在默认的情况下,基于ValidationAttribute的声明是验证被使用,我们只需 要将相应的ValidationAttr ...
- ASP.NET MVC中实现属性和属性值的组合,即笛卡尔乘积02, 在界面实现
在"ASP.NET MVC中实现属性和属性值的组合,即笛卡尔乘积01, 在控制台实现"中,在控制台应用程序中实现了属性值的笛卡尔乘积.本篇在界面中实现.需要实现的大致如下: 在界面 ...
随机推荐
- SpringMVC_HelloWorld_01
通过配置文件的方式实现一个简单的HelloWorld. 源码 一.新建项目 1.新建动态web项目 2.命名工程springmvc-01 3.勾选"Generate web.xml depl ...
- css部分复习整理
CSS代码语法 css 样式由选择符和声明组成,而声明又由属性和值组成,如下图所示: 选择符:又称选择器,指明网页中要应用样式规则的元素,如本例中是网页中所有的段(p)的文字将变成蓝色,而其他的元素( ...
- Python常见面试(习题)——水仙花数
今天,给大家分享一个习题. 用python输出100到1000以内的水仙花数. 相信很多小伙伴都听到过,或者遇到过这个题目. 那么今天就来带大家做一做这道题. 首先,我们要知道什么是水仙花数, (@_ ...
- 7z
7zip是一款开源的解压缩软件,不仅自己独有的7z格式,而且支持zip,rar,tar,gzip等众多其他格式,同时7z格式的压缩比例很高,目前很多硬盘版的游戏都采用zip进行打包.下面介绍一下Lin ...
- px、pt、ppi、dpi、dp、sp之间的关系
http://www.woshipm.com/pmd/176328.html 各自的定义: px:pixel,像素,电子屏幕上组成一幅图画或照片的最基本单元 pt: point,点,印刷行业常用单位, ...
- SpringMVC介绍及参数绑定
本节内容: SpringMVC介绍 入门程序 SpringMVC架构 SpringMVC整合MyBatis 参数绑定 SpringMVC和Struts2的区别 一.SpringMVC介绍 1. 什么是 ...
- 【PAT】1053 Path of Equal Weight(30 分)
1053 Path of Equal Weight(30 分) Given a non-empty tree with root R, and with weight Wi assigned t ...
- springmvc中使用MockMvc测试controller
示例代码 import com.alibaba.fastjson.JSONObject; import org.junit.Before; import org.junit.Test; import ...
- JavaScript的计时器的工作原理
最近都在看一些JavaScript原理层面的文章,恰巧看到了jQuery的作者的一篇关于JavaScript计时器原理的解析,于是诚惶诚恐地决定把原文翻译成中文,一来是为了和大家分享,二来是为了加深自 ...
- 图的遍历 之 深搜dfs
DFS 遍历 深度优先搜索是一个递归过程,有回退过程. 对一个无向连通图,在访问图中某一起始顶点u 后,由u 出发,访问它的某一邻接顶点v1:再从v1 出发,访问与v1 邻接但还没有访问过的顶点v2: ...