簡體   English   中英

在多選列表框中顯示選定的項目

[英]Show selected items in a multi-select list box

我嘗試了各種方法來使它起作用。 我認為我的模型或控制器中可能缺少某些內容,因此我將發布所有這三個部分。

我的數據庫中的數據顯示了顧問在先前約會中選擇的一些建議性話題。 當顧問調用該約會時,應用程序應顯示所有可能主題的列表,並突出顯示先前選擇的主題。 除了最后一點,一切正常。

我知道我正在檢索正確的信息,因為我可以分別顯示所選的項目。 我只是無法讓他們出現而已。 這是代碼。 我刪去了不相關的部分。

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,
            };

然后查看

@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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM