-1

我用调试器检查了MultiSelectList值的内容已经改变。所以我看到在选择了哪些值之后 selected Value = true;

但在我看来,我没有看到。运行时,所选值不可见。最后我尝试了ViewBag, ViewDataListBox()还有几件事。我没看到什么?

这是我的控制器:

public ActionResult Edit(int id)
        {
            UserDto user = _userService.GetUserById(id);

            var companiesSelectList = new MultiSelectList(_companyService.GetCompanies(), "Id", "Name", user.Companies.Select(x => x.Id.ToString()).ToArray());


            TempData["CompaniesList"] = companiesSelectList;
            return View(user);
        }

我的观点:

 <div class="col-md-10">
    @Html.ListBoxFor(model => model.Companies, (MultiSelectList)TempData["CompaniesList"], new { @class = "form-control", @required = "required", @multiple = "multiple" })
            </div>

我用这个来进行可视化

   $(document).ready(function () {

        $('#Companies').select2({

            placeholder: 'Please Select Company',
            maximumSelectionSize: 15,
            width: 400,
        });
    });
4

1 回答 1

2

我朋友修。

我在 CompaniesSelectList 中获得了选定的项目,但我没有设置选定的值。我需要这样的JQuery。第一的:

   public JsonResult UserCompany(string userId)
        {
            UserDto user = _userService.GetUserById(int.Parse(userId));
            return Json(user.Companies.Select(x => x.Id).ToList(), JsonRequestBehavior.AllowGet);
        }

Json数据携带用户连接的公司我已经发送了公司ID。

此 Ajax 方法检查所选项目:

 var userId = $('#Id').val();
    $.ajax({
        url: "/User/UserCompany",
        type: 'POST',
        data: { 'userId': userId },
        datatype: 'json',
        success: function (data) {
            $('#Companies').val(data).trigger("change");
        }

    });

感谢我的工作朋友和看过我问题的人。cu另一个问题:)

于 2015-12-30T13:30:35.030 回答