MVC中CheckBox

一、单个Checkbox

 

1、View文件

<%= Html.CheckBoxFor(model => model.IsNeverExpired)%>

 

2、生成的HTML为

<input id="IsNeverExpired" name="IsNeverExpired" type="checkbox" value="true" />
<input name="IsNeverExpired" type="hidden" value="false" />

 

3、备注

 

(1)、上面生成的HTML有点奇怪, 为什么它会生成两个控件呢?

因为如果只生成一个input, 系统无法区分"没有选中checkbox" 和 "checkbox没有生成".

 

(2)、那又是为什么只生成一个input就无法区分呢?

原来当一个form中包含checkbox时,如果没有给它赋值(选中), 在服务器端Request.Form中得到的值是NULL

 

 

二、多个Checkbox

 

方法一:通过在视图页编码的方式

 
C# 代码    复制
@using MvcCheckBoxList.Model
@model MvcApplication2.Models.UserVm
@{
    ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout。cshtml"; } @using (Html.BeginForm()) { @Html.HiddenFor(m => m.User.Id) <br/> @Html.LabelFor(m => m.User.Name) @Html.EditorFor(m => m.User.Name) @Html.ValidationMessageFor(m => m.User.Name) <br/> <ul style="list-style:none;"> @foreach (var a in Model.AllRoles) { <li> @if (Model.SelectedRoleIds.Contains(a.Id)) { <input type="checkbox" name="SelectedRoleIds" value="@a.Id" id="@a.Id" checked="checked"/> <label for="@a.Id">@a.Name</label> } else { <input type="checkbox" name="SelectedRoleIds" value="@a.Id" id="@a.Id" /> <label for="@a.Id">@a.Name</label> } </li> } </ul> <br/> <input type="submit" value="为用户设置角色"/> } @section scripts { @Scripts.Render("~/bundles/jqueryval") } 

 

方法二:通过NuGet的MvcCheckBoxList扩展

→工具--库程序包管理器--程序包管理器控制台→install-package MvcCheckBoxList

 
C# 代码    复制
@using MvcCheckBoxList.Model
@model MvcApplication2.Models.UserVm
@{
    ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout。cshtml"; } @using (Html.BeginForm()) { @Html.HiddenFor(m => m.User.Id) <br/> @Html.LabelFor(m => m.User.Name) @Html.EditorFor(m => m.User.Name) @Html.ValidationMessageFor(m => m.User.Name) <br/> @Html.CheckBoxListFor(m => m.SelectedRoleIds, m => m.AllRoles, //所有角色  r => r.Id, //value值  r => r.Name, //显示值  r => r.UserRoles, //用户当前角色  Position.Horizontal //CheckboxList排列方向  ) <br/> <input type="submit" value="为用户设置角色"/> } @section scripts { @Scripts.Render("~/bundles/jqueryval") } 

 

转载于:https://www.cnblogs.com/rrxc/p/4073430.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值