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") } 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM