2013-05-01 1 views
1

Я пробовал различные способы заставить это работать. Я думаю, может быть, у меня что-то не хватает в моей модели или контроллере, поэтому я размещаю все три части.Показать выбранные элементы в списке выбора нескольких файлов

У меня есть данные в базе данных, которые показывают некоторые рекомендации, выбранные советником в предыдущем назначении. Когда консультант называет это назначение, приложение должно отображать список всех возможных тем с выбранными ранее выделенными. Все работает, кроме последнего бит.

Я знаю, что получаю правильную информацию, потому что я могу отображать выбранные элементы отдельно. Я просто не могу заставить их выбраться. Вот код. Я вырезаю ненужные части.

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

Обратите внимание, что Еогеасп корректно отображает выбранные элементы. Это просто для тестирования и вытащит. ListBoxFor - это то место, где я боюсь. То, что у меня здесь, не работает (показывает полный список, ничего не подсвеченный). И это тот бит, где я пробовал разные подходы, и все не удается.

+0

Брайан Робертс. То есть @ Html.ListBox («myLB», Model.AdvisingIdList) возвращает список выделенным. Поэтому я собираюсь отметить это как «Ответ» и уйти и попытаться выяснить, почему он не работает с ListBoxFor. – user2283231

+0

Иногда могут возникать проблемы с именами. Посмотрите на имена, которые вы определяете, и убедитесь, что вы не используете их повторно. Обратите внимание на параметры строки запроса и элементы, которые помещаются в сумку просмотра. –

ответ

1

Похоже, вы случайно прошли слишком глубоко. У вас уже есть список выбора, который нужен всем пользователям listboxfor.

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

Но, если честно, глядя на то, как вы определяете свои списки, я думаю, что вы действительно хотите, может быть внушение работы

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

Ни один из них не работал. В первом случае отображаются только выбранные темы (ничем не выделенные). Последний вызывает отображение всех тем, но ничего не выделяется. Спасибо за быстрый ответ. – user2283231

+0

Это похоже на проблему с данными. Второй показывает полный список, но то, что происходит, похоже на то, что вы ничего не настраиваете на «выбранный», проверьте свою строку кода, если (selTopic! = Null) { selTopic.Selected = true; } И убедитесь, что если на самом деле происходит удар, и что-то вызывает выбранный флаг в true. –

+0

Мне показалось, что я это проверил, но я снова посмотрю, потому что твоя мысль очень похожа на мою - это просто проблема с данными, а не проблема с презентацией. Если я смогу получить это исправление, я вернусь, чтобы отметить решение. – user2283231