asp mvc @Html.CheckBox(sel,true) 往后台传值问题
@Html.CheckBox(
"sel"
,
true
)
生成2个输入,而不是一个,这是为什么呢?
<
input
checked
=
"checked"
id
=
"sel"
name
=
"sel"
type
=
"checkbox"
value
=
"true"
/>
<
input
name
=
"sel"
type
=
"hidden"
value
=
"false"
/>
如果未选中复选框,则不会提交表单字段。这就是为什么隐藏领域总是存在虚假价值的原因。如果您不选中复选框,窗体将仍然具有来自隐藏字段的值。这就是ASP.NET MVC如何处理复选框值。
如果你想确认一下,把一个复选框放在不是Html.Hidden的表单上,而是用<input type="checkbox" name="MyTestCheckboxValue"></input>
。离开复选框,提交表单,并在服务器端查看张贴的请求值。你会看到没有复选框的值。如果你有隐藏的领域,它将包含有价值的MyTestCheckboxValue
条目false
。
checkbox如果不选中的话,提交表单时它是不会被提交的,这样会导致服务器端controller中Model Binder失败或出错,所以加了隐藏文本框,它的值永远是false,也就是checkbox不选中的话提交的就是这个隐藏文本框的值
选中的时候,false也提交过了,这样不就提交了两个值吗
对,同时提交两个值:true和false,如果是用Model Binder自动绑定对象的话,它会检查提交的值中有没有true,如果有true,它就用true值优先绑定,如果是你自己用Request.Form这样来获取checkbox的值的话,那就小心了,因为你获取的是两个值:true和false
你可以写一个帮手来防止添加隐藏的输入:
using System.Web.Mvc;
using System.Web.Mvc.Html;public static class HelperUI
{public static MvcHtmlString CheckBoxSimple(this HtmlHelper htmlHelper, string name, object htmlAttributes){string checkBoxWithHidden = htmlHelper.CheckBox(name, htmlAttributes).ToHtmlString().Trim();string pureCheckBox = checkBoxWithHidden.Substring(0, checkBoxWithHidden.IndexOf("<input", 1));return new MvcHtmlString(pureCheckBox);}
}
用它:
@Html.CheckBoxSimple("foo", new {value = bar.Id})
2新增页面 里的复选
@Html.CheckBox("ShiYiObjects", new { value = "幼儿" })幼儿
@Html.CheckBox("ShiYiObjects", new { value = "青少年" })青少年
@Html.CheckBox("ShiYiObjects", new { value = "成人" })成人
@Html.CheckBox("ShiYiObjects", new { value = "老年人" })老年人
每个生成2个<input type=“checkbox” />
Request["ShiYiObjects"] 这样获取 得到一个 字符串 中间用逗号隔着
Create(List<string> ShiYiObjects) 参数获取(对象参数获取) 数组 有 8 个 元素 因为有 隐藏域
<input name="ShiYiObjects" type="checkbox" value="幼儿" />幼儿
<input name="ShiYiObjects" type="checkbox" value="青少年" />青少年
<input name="ShiYiObjects" type="checkbox" value="成人" />成人
<input name="ShiYiObjects" type="checkbox" value="老年人" />老年人
Request["ShiYiObjects"] 这样获取 得到一个 字符串 中间用逗号隔着
Create(List<string> ShiYiObjects) 参数获取(对象参数获取) 获取的是一个数组 4 个 元素
3编辑页面 里的复选
一样
<input name="ShiYiObjects" type="checkbox" value="幼儿" @if (Model.ShiYiObject.Contains("幼儿")) { @Html.Raw("checked='checked' ") } />幼儿
<input name="ShiYiObjects" type="checkbox" value="青少年" @if (Model.ShiYiObject.Contains("青少年")) { @Html.Raw("checked='checked' ") } />青少年
<input name="ShiYiObjects" type="checkbox" value="成人" @if (Model.ShiYiObject.Contains("成人")) { @Html.Raw("checked='checked' ") } />成人
<input name="ShiYiObjects" type="checkbox" value="老年人" @if (Model.ShiYiObject.Contains("老年人")) { @Html.Raw("checked='checked' ") } />老年人
或者
@Html.CheckBox("ShiYiObjects", Model.ServiceGroups.Contains("幼儿"), new { value = "幼儿" })幼儿
@Html.CheckBox("ShiYiObjects", Model.ServiceGroups.Contains("青少年"), new { value = "青少年" })青少年
@Html.CheckBox("ShiYiObjects", Model.ServiceGroups.Contains("成人"), new { value = "成人" })成人
@Html.CheckBox("ShiYiObjects", Model.ServiceGroups.Contains("老年人"), new { value = "老年人" })老年人
存在就选上
2018-1-16
新增页面变成这样子
验证不通过 复选框也选上
@Html.CheckBox("ShiYiObjects", Model.ShiYiObject.Contains("幼儿"), new { value = "幼儿", style = "position: unset;" })幼儿
@Html.CheckBox("ShiYiObjects", Model.ShiYiObject.Contains("青少年"), new { value = "青少年", style = "position: unset;" })青少年
@Html.CheckBox("ShiYiObjects", Model.ShiYiObject.Contains("成人"), new { value = "成人", style = "position: unset;" })成人
@Html.CheckBox("ShiYiObjects", Model.ShiYiObject.Contains("老年人"), new { value = "老年人", style = "position: unset;" })老年人
asp mvc @Html.CheckBox(sel,true) 往后台传值问题相关推荐
- ASP.NET MVC 后台传值前端乱码解决方案 富文本Ueditor编辑
只是将当前内容String当成Html插入,我想是跟数据类型转换差不多 //把内容赋值给ueditorvar ue = UE.getEditor('editor');//实例化ue.ready(fun ...
- ASP.Net TextBox只读时不能通过后台赋值取值
ASP.Net TextBox只读时不能通过后台赋值取值 今天在开发一个asp.net的页面遇到了TextBox设置了ReadOnly属性,在js中赋值后,后台代码取不到值的情况,经过在网上查找,找到 ...
- Spring MVC遭遇checkbox的问题解决方式
Spring MVC遭遇checkbox的问题是:当checkbox全不选时候,则该checkbox域的变量为null,不能动态绑定到spring的controller方法的入參上,并抛出异常. 解决 ...
- Spring MVC遭遇checkbox的问题解决方案
Spring MVC遭遇checkbox的问题是:当checkbox全不选时候,则该checkbox域的变量为null,不能动态绑定到spring的controller方法的入参上,并抛出异常. 解决 ...
- 多选框向后台传值,多选框的回显,对多选框的各种操作
1.多选框的回显: js:$( function(){ var checkBoxAll =$("input[name^='checkbox_']");//获取前缀为 ...
- springMVC:后台传值并返回页面
java后台传值:request.setAttribute("msg","成功!!"); jsp页面可以通过EL表达式获取到request中设置的属性值:< ...
- 工作150:1、根据后台传值动态显示开关状态及文字说明(0为文字,1为图标)
实施方法 Swich默认是boolean类型,而后台传值 为number类型,这个时候我们需要用number来取代boolean类型: <template slot-scope="sc ...
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之登录窗口调试...
现在可以对登录窗口进行调试了. 打开系统的首页页面文件,Views\Home目录下的Index.cshtml文件.要动态加载登录窗口,需要先设置好加载路径,因而在onReady函数上加入以下代码: E ...
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之完成登录功能...
登录窗口已经完成了,现在可以完成最后的工作了,主要就是完成Membership提供者的配置. 首先打开Web.Config文件,在configuration段内添加一个数据库连接定义,代码如下: &l ...
最新文章
- 二维前缀和+差分 HDU6514 Monitor
- OSChina 周日乱弹 ——身价上亿,然而找不到女朋友 你信么?
- ip(IP)地址详解!
- 【C++】50.编程中切换状态的【有限状态机】
- 一个发布app测试版本的网站
- windows cmd 窗口 显示信息慢_Windows系统直接运行Linux,竟是如此简单
- 1.java的基础和数据类型
- Java基础——虚拟机结构
- 13.JAVA基础:八进制,十六进制表示
- 学习Linux tar 命令:最简单也最困难
- centos 安装java_自己动手基于centos7安装docker及如何发布tomcat镜像
- C#使用百度API通过IP获取地理位置和坐标
- 金橙子打标软件学习流程
- ps新手零基础知识入门教程学习_图文
- 网易云课堂-数据结构
- 【练习】canvas——flappyBird
- 32岁坚持裸辞背负房贷1w4,被阿里面试官狂虐,沉淀3个月拿到腾讯offer年薪40w+!
- 信息系统风险评估内容
- 如何用excel做一份好看的年度业绩报告,让领导满意呢?
- ​ios11自带邮件添加新的邮箱账号
热门文章
- 如何快速搜索脑机接口社区的历史文章?
- runtime无法执行grep_让你的 Shell 命令执行可视化和告警
- 这份宝典火了,小哥学后加薪30W+
- 用安卓手机解锁目标检测模型YOLOv5,识别速度不过几十毫秒!
- 量子信息先行者中科院院士郭光灿:“要把中国量子计算机卖到国外”
- 开始报名丨CCF C³-05@亚马逊云科技:未来云计算之旅
- 清华「计图」现在支持国产芯片了!动态图推理比PyTorch快了270倍
- 打开摄像头,2D插画实时变动画,中国程序媛出品,Demo在线可玩
- 又是加拿大!连年拒签NeurIPS参会者被指太荒唐,Hinton亲自过问也没辙
- Julia数据统计最全教程,代码图解全都有,昆士兰大学出品,公开免费阅读