@Html.CheckBox和@Html.CheckBoxFor这两个方法一直没有用好,为了尽快多个CheckBox并且可以回传数据,使用了下面的办法,怎么看怎么觉得笨,不过先这样吧:

在View页中:

<div class="dropdownlist-field">
            @if (Model != null)
            {
                foreach (var item in Model.lstUserRole)
                {
                    if (item.bCheck)
                    {
                        <input type="checkbox" id="checkboxRole" name="checkboxRole" value="@item.role.RoleName" checked=true /><span> @item.role.RoleName</span>
                    }
                    else
                    {
                       <input type="checkbox" id="checkboxRole" name="checkboxRole" value="@item.role.RoleName" /><span> @item.role.RoleName</span>
                    }         
                }
            }

        </div> 

注意:id和name都一样。

 在Control中:

[HttpPost]
        public ActionResult Edit(UserWrapper userWp, FormCollection collection)
        {
            try
            {
                if (userWp.user != null)
                {
                    UpdateModel(userWp.user);
                    //
                    if(collection.GetValues("checkboxRole")!=null)//这是判断name为
checkboxRole的checkbox的值是否为空,若为空返回NULL;
                    {
                        string strRoles = collection.GetValue("checkboxRole").AttemptedValue;//
AttemptedValue返回一个以,分割的字符串
                        string[] lstRoles = strRoles.Split(',');
                        foreach (string r in lstRoles)
                        {
                            ......
                        }
                    }
                    sysMg.SaveChanges();
                    return RedirectToAction("Index");
                }
                else
                {
                    //throw new NoSuchRecordException
                    return View();
                }
            }
            catch
            {
                return View();
            }

        }