1
        public ActionResult Edit(int? id)
    {
        ViewBag.Role = new SelectList((from t in db.Roles where t.RoleID != 1 && t.RoleID != 2 select t), "RoleID", "RoleName");

        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }

        User user = db.Users.Find(id);

        if (user == null)
        {
            return HttpNotFound();
        }

        return View(user);
    }

ViewBag.Role 是将所有角色值生成到多选复选框中。

        <div class="form-group">
        @Html.Label("Roles", htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.DropDownList("Role", null, htmlAttributes: new { @multiple = "multiple", @class = "form-control" })
        </div>
    </div>

<script type="text/javascript">
$(function () {
    $('#Role').multiselect({
        includeSelectAllOption: true
    });
});

MultiSelect CheckBox 基本上如下图所示。

在此处输入图像描述

这是我的问题,我如何预先检查用户已经拥有的角色?例如,x 用户有一个角色 Manager,因此在编辑页面时 Manager 复选框将被选中。

4

1 回答 1

1

你可以这样做:

$('select').multiselect({includeSelectAllOption: true});

// Get your data
var userRoles="1,3"; // You can use a ViewBag like ViewBag.UserRoles for roles of user

// Split data by ","
var userRolesArray=userRoles.split(",");

// Set dataArray
$("select").val(userRolesArray);

// Refresh for cheking default values
$("select").multiselect("refresh");

您可以对用户角色使用ViewBaglikeViewBag.UserRoles并将其填写在您的Action.

在线演示(jsfiddle)

于 2018-07-28T10:57:14.530 回答