2010-01-26 3 views
4

Я перешел, а затем вернулся к этому, но я все еще не могу заставить его работать.Почему не отображается многоселекторный список, показывающий выбранные элементы? MVC

 var companiesList = subcontractRepository.SubcontractCompanies(Subcontract.subcontract_id); 
     IEnumerable<Guid> selectedList = companiesList.Select(a => a.Id); 
     Companies = new MultiSelectList(companiesList, "Id", "Name", selectedList); 

В SubcontractRepository.cs

public class SelectCompanyItem 
    { 
     public string Name { get; set; } 
     public Guid Id { get; set; } 
    } 

    public IEnumerable<SelectCompanyItem> SubcontractCompanies(Guid id) 
    { 
     return 
      from c in db.companies 
      select new SelectCompanyItem 
      { 
       Name = c.company_name, 
       Id = c.company_id 
      }; 
    } 

Вид:

 <p> 
      <label for="Companies">Company:</label> 
      <%= Html.ListBox("Companies", Model.Companies) %> 
      <%= Html.ValidationMessage("Companies", "*") %> 
     </p> 

производства HTML:

<p> 
     <label for="Companies">Company:</label> 
     <select id="Companies" multiple="multiple" name="Companies"><option value="4cf411d0-e111-488b-822f-ea194951cfda">Second Company</option> 
     <option value="1c21e613-a668-4817-bf6d-73befb8c9dbd">Test Company</option> 
     </select> 
    </p> 
+2

Значит, вы пытаетесь выбрать все элементы в списке, верно? Вы посмотрели HTML-код, который был создан? –

+0

Да. Я пытался упростить его, удалив мои критерии выбора и просто запустив его, сначала выбрав все. Добавлен html, созданный для оригинального сообщения. – RememberME

+1

Из вашего html не отображается выбранный атрибут. Поэтому проверьте значения selectedList, которые они могут не заполнить или не совпадают. Попробуйте сделать список для selectedValued и посмотреть, работает ли он. – sarvesh

ответ

7

Я нашел решение. ListBox должен иметь другое имя из MultiSelectList. Я переименовал MultiSelectList в свой исходный код, и он работает. Я не хочу даже думать о том, сколько времени я потратил на это!

+0

Это была очень неприятная ситуация для меня. Несмотря на то, что у моего оригинального кода было другое имя, это было только после того, как я дал списку полное фиктивное имя (т. Е. «StupidListBox») и перезапустил код, который он начал работать. Я впоследствии вернулся и переименовал список в более подходящее ;-) – camainc

+0

Спасибо за это! Я знаю, что я столкнулся с этим раньше, но забыл все об этой немой «добыче» ... – Pwninstein

1

Вот уродливая работа вокруг сейчас. Установите ViewData с выбранными значениями.

ViewData["Companies"] = new string[] { "guid-1", "guid-2" }; 

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

+0

Спасибо, что работает. Пожалуйста, дайте мне знать, если вы это выясните. Мне не повезло. – RememberME

+0

Я обнаружил проблему. См. Мой ответ. Спасибо за вашу помощь. – RememberME

+0

Ах, имеет смысл, похоже, что вспомогательный метод находит запись ViewData для компаний, и поскольку она является emtpy, она не устанавливает какие-либо поля как выбранные. Благодарю. – sarvesh

Смежные вопросы