在多选择列表框中显示所选项目

本文关键字:显示 选项 项目 选择 列表 | 更新日期: 2023-09-27 18:11:37

我已经尝试了各种方法来让它工作。我想也许我的模型或控制器中缺少了一些东西,所以我把这三个部分都贴出来了。

我在数据库中有数据,其中显示了顾问在以前的约会中选择的一些建议主题。当导师打电话预约时,应用程序应该显示所有可能的主题列表,并突出显示之前选择的主题。

我知道我正在检索正确的信息,因为我可以单独显示所选的项目。我就是没法让他们入选。下面是代码。我在剪掉不相关的部分。

public class AppointmentModel
{ ...
    public string AdvisingTopicId { get; set; }
    public List<SelectListItem> AdvisingIdList { get; set; }
    public SelectList AdvisingTopicNames { get; set; }
}
public class HomeController : AdvisorBaseController
{ ...
        var topicCodes = appointment.advising_topic.ToList();
        var advisingTopics = new SelectList((from t in topicCodes
                              select t.name).ToList(), "name");
        var topicsList = (from t in db.advising_topic
                          select new SelectListItem
                          {
                              Selected = false,
                              Text = t.name,
                              Value = SqlFunctions.StringConvert((double)t.advising_topic_id).Trim()
                          }).ToList();
        foreach (var topicCode in topicCodes)
        {
            var selTopic = topicsList.Find(x => x.Value == topicCode.advising_topic_id.ToString());
            if (selTopic != null)
            {
                selTopic.Selected = true;
            }
        } ...
            var appointmentModel = new AppointmentModel
            { ...
                AdvisingTopicNames = advisingTopics,
                AdvisingIdList = topicsList,
            };

,然后是view

@model AcademicAdvising.Models.AppointmentModel
<h3>Advising Topics</h3>
<ul>
    @foreach (var item in Model.AdvisingTopicNames)
    {
        <li>@Html.DisplayFor(x => item)</li>
    }
</ul>
    @Html.ListBoxFor(m=>m.AdvisingIdList, new SelectList(Model.AdvisingTopicNames, "Value", "Text", Model.AdvisingTopicNames.SelectedValue))

注意foreach正确地显示所选的项。这只是为了测试,会被取出来的。ListBoxFor是我挣扎的地方。我在这里没有工作(显示完整的列表,没有突出显示)。在这一点上,我尝试了各种方法,但都失败了。

在多选择列表框中显示所选项目

看起来你可能不小心走得太深了。你已经有了一个选择列表,这是listboxfor函数所需要的。

 @Html.ListBoxFor(m=>m.AdvisingIdList, Model.AdvisingTopicNames)

但老实说,看看你是如何定义你的列表的,我认为你真正想要的可能是

 @Html.ListBoxFor(m=>m.AdvisingIdList, Model.AdvisingIdList)