获取asp.net mvc中Html.CheckBox生成代码的值

在asp.net mvc 下 checkbox的值怎么获取?

微软的MVC框架出了有一段时间了,最近在用它做个东西,使用过程中发现了一个小问题就是Html.CheckBox方法生成的Checkbox的值在服务器端获取出现异常,于是仔细研究了一下它的源代码,找到了原因。

我本以为可以有个bool.TryPrase方法进行转换,但是不行,永远返回false值,于是查看了一下源代码,发现Html.CheckBox方法生成的html代码里面不仅有一个input type=checkbox,还有一个input type=hidden,而且2个的name属性是一样的,这样的话提交到服务器上会是一个已,号连接的字符串,bool.TryPrase方法肯定返回false了,但是为什么这样呢?

于是下载了mvc的源代码,发现了如下的注释:

Render an additional <input type="hidden".../> for checkboxes. This addresses scenarios where unchecked checkboxes are not sent in the request. Sending a hidden input makes it possible to know that the checkbox was present on the page when the request was submitted.

原来是这样,如果checkbox不选的话是不会有数据提交到服务器端的,所以程序自动加了一个hidden,这样无论checkbox选择没选择,都会有数据提交到服务器端,,可能是为了方便程序处理把。

那么这样的话

如果checkbox被选中,则服务器收到的true,false。

checkbox未选中,因为有hidden的input存在所以服务器则收到flase。

那么,我们用如下代码即可获得checkbox的选中状态

           

  1. Request.forms[Key].Contains("true"); 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值