有一个带有多选
的下拉列表<select asp-for="UsersListForAssignTo" id="selectUser" class="form-control" asp-items="@ViewBag.UsersList" multiple="multiple"></select>
我准备一个列表,以便默认选择一些值
List<string> allUsers = await db.Users.Select(u => u.UserName).ToListAsync();
List<string> usersAssignedTo = await db.MasterAssigmentTables.Where(mat => mat.TableId == id && mat.TableName == typeof(TestCaseDesign).Name).Include(mat => mat.User).Select(u => u.User.UserName).ToListAsync();
List<SelectListItem> userListAssigned = new List<SelectListItem>();
foreach (string user in allUsers)
{
if (usersAssignedTo.Contains(user))
{
userListAssigned.Add(new SelectListItem { Text = user, Selected = true });
}
else
{
userListAssigned.Add(new SelectListItem { Text = user, Selected = false });
}
}
ViewBag.UsersList = userListAssigned;
将值传递给模型
public List<string> UsersListForAssignTo { get; set; }
问题在于,当我使用&#34; asp-for&#34;所有值都未被选中
如果我删除了对模型的绑定 - 那么一切正常
如何解决这个问题?
答案 0 :(得分:0)
在这种情况下,Selected
的{{1}}值毫无意义。唯一重要的是SelectListItem
中的内容。该对象由请求中的值,ModelState
中的任何内容(包括ViewData
)以及最终传递到视图中的模型上的值组成。
长短,如果你想要最初选择的一些选项,它们需要出现在你绑定的列表中。在返回视图之前,将ViewBag
设置为您想要最初选择的值列表,您就可以了。