我尝试了各种方法来使其工作。我想也许我在模型或控制器中缺少一些东西,所以我发布了所有三个部分。在多选列表框中显示选中的项目
我有一个数据库中的数据显示顾问在上次约会中选择的一些建议主题。当顾问调用该预约时,应用程序应显示所有可能主题的列表,并将之前选择的主题突出显示。除了最后一点之外,一切都有效
我知道我正在检索正确的信息,因为我可以单独显示所选项目。我只是不能让他们出现选择。这是代码。我正在剪掉不相关的部分。
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