我嘗試了各種方法來使其工作。我想也許我在模型或控制器中缺少一些東西,所以我發佈了所有三個部分。在多選列表框中顯示選中的項目
我有一個數據庫中的數據顯示顧問在上次約會中選擇的一些建議主題。當顧問調用該預約時,應用程序應顯示所有可能主題的列表,並將之前選擇的主題突出顯示。除了最後一點之外,一切都有效
我知道我正在檢索正確的信息,因爲我可以單獨顯示所選項目。我只是不能讓他們出現選擇。這是代碼。我正在剪掉不相關的部分。
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是我掙扎的地方。我這裏有什麼不起作用(顯示沒有突出顯示的完整列表)。這就是我嘗試過各種方法的地方,都失敗了。
布萊恩·羅伯茨的建議,作品的內容。即 @ Html.ListBox(「myLB」,Model.AdvisingIdList) 返回突出顯示的列表。所以我打算將它標記爲已回答,然後離開並嘗試弄清楚它爲什麼不能與ListBox一起工作。 – user2283231 2013-05-02 20:19:18
有時會出現命名問題。看看你正在定義的名字,並確保你沒有重複使用它們。請注意查詢字符串參數和放入視圖包中的項目。 – 2013-05-03 15:41:37