代码之家  ›  专栏  ›  技术社区  ›  Selman

如何将选定值设置为ListBox

  •  -1
  • Selman  · 技术社区  · 9 年前

    我用调试器检查了 MultiSelectList 值已更改。所以我看到,在选择其值之后 Value = true; .

    但我没有看到。运行时,所选值不可见。最后我试了 ViewBag , ViewData , ListBox() 还有几件事。我不明白什么?

    这是我的控制员:

    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,
            });
        });
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Selman    9 年前

    我的朋友修好了。

    我在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");
            }
    
        });
    

    谢谢我的工作朋友和任何关注我问题的人。 另一个问题:)