MultiSelectList不选择默认选项

时间:2018-07-03 13:51:01

标签: asp.net .net asp.net-mvc razor

我有一个视图,其中提供了带有多个选择选项的下拉列表。
这是为视图提供数据的控制器的一部分:

this.ViewBag.UserSelectList = new MultiSelectList(userList, "Id", "FullName", user.Select(u => u.Id).ToArray());
this.ViewBag.UserId = user.Select(u => u.Id).ToArray();

我不知道我是否需要第二行,但是在它成为单选列表之前,它运行良好,并且正在选择我需要的元素。
userList是所有可供选择的用户的列表。 user是所选用户的列表。
这是“查看”部分:

@Html.DropDownList("userId", (MultiSelectList) ViewBag.UserSelectList,
                   htmlAttributes: new { @class = "selectpicker", multiple = "multiple" })

逻辑原理如下:

  • userList是常量
  • 如果请求中的userId为空,则控制器将已登录的用户添加到user列表中

问题是:

  • 如果userId为空,则下拉列表中没有任何选择
  • 如果userId具有多个元素-下拉列表中仅选择了第一个元素

这是完整的Controller方法:

public async Task<ActionResult> Calendar(string[] userId, Enums.CalendarOptionEnum? calendarOption)
{
    calendarOption = calendarOption ?? Enums.CalendarOptionEnum.Self;
    userId = userId ?? new [] { this.User.Identity.GetUserId() };
    var user = (await this.unitOfWork.UserRepository.Find(u => userId.Contains(u.Id)));
    if (user == null || user.Count == 0)
    {
        return this.HttpNotFound();
    }

    var leaves = await this.leaveService.GetLeavesForCaledar(user, calendarOption.Value);
    var userList = (await this.userService.GetAllSubordinatesAndSelf(this.User.Identity.GetUserId())).OrderBy(u => u.LastName);

    this.ViewBag.UserSelectList = new MultiSelectList(userList, "Id", "FullName", user.Select(u => u.Id).ToArray());
    this.ViewBag.UserId = user.Select(u => u.Id).ToArray();
    this.ViewBag.CalendarOption = calendarOption;
    return this.View(leaves);
}

我一直在调试,甚至创建IEnumberable<SelectListItem>并手动将Selected属性设置为true,但是它也没有选择这些选项。

enter image description here

0 个答案:

没有答案