2

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

public class FormInformation 
{ 
    public IEnumerable<SelectListItem> ListItems { get; set; } 
    public string[] SelectedItems { get; set; } 
    public ServiceObject serviceObject { get; set; } 
} 

я заполнить список выбора, как это:

private SelectList CreateSelectListItems(int counter, List<string> clients) 
    { 
     if (counter == 1) 
     { 
      return new SelectList(new[] 
        { 
         new {id = 1, Name = ""}, 
         new {id = 2, Name = clients[0]}, 
        }, "Id", "Name"); 
     } 
     if (counter == 2) 
     { 
      return new SelectList(new[] 
        { 
         new {id = 1, Name = ""}, 
         new {id = 2, Name = clients[0]}, 
         new {id = 3, Name = clients[1]}, 
        }, "Id", "Name"); 
     } 
     if (counter == 3) 
     { 
      return new SelectList(new[] 
        { 
         new {id = 1, Name = ""}, 
         new {id = 2, Name = clients[0]}, 
         new {id = 3, Name = clients[1]}, 
         new {id = 4, Name = clients[2]}, 
        }, "Id", "Name"); 
     } 
     else 
     { 
      return new SelectList(new[] 
        { 
         new {id = 1, Name = ""}, 
         new {id = 2, Name = clients[0]}, 
         new {id = 3, Name = clients[1]}, 
         new {id = 4, Name = clients[2]}, 
         new {id = 5, Name = clients[3]}, 
        }, "Id", "Name"); 
     } 
    } 
} 

мне это нужно, чтобы быть полностью динамичным, хотя. Это позволяет использовать только четыре возможности. Я знаю, что это что-то маленькое, что я не понимаю об этом. Поэтому у меня может быть 3 клиента, или у меня может быть 7 клиентов. Как мне перебирать все клиенты и добавлять их без необходимости использовать счетчик? Большое спасибо.

ответ

2

Вы можете попробовать использовать Linq к объектам .Select() перегрузки метода, который дает индекс элемента, а itereting через sequeance:

private SelectList CreateSelectListItems(List<string> clients) 
{ 
    clients.Insert(0, ""); 
    var items = clients.Select((el, index)=> new {id = index + 1, Name = el}) 
         .ToList(); 
    return new SelectList(items, "Id", "Name"); 
} 
+0

Отлично! это именно то, что мне нужно. Большое вам спасибо, это очень помогает. – user3002092

+0

Добро пожаловать :) –