Замените это:
ddl.Items.Add(new ListItem(nameList[name].ToString()));
с этим:
ddl.Items.Add(new ListItem(name));
Сделанный как ужин.
Почему не только связывают DDL непосредственно со Списком как
DropDownList ddl = new DropDownList();
ddl.DataSource = nameList;
ddl.DataBind();
Это было бы то, потому что Список не индексируется строкой (имя), но ints.
foreach (string name in nameList)
{
ddl.Items.Add(new ListItem(name));
}
зафиксирует это.
foreach (string name in nameList){
ddl.Items.Add(new ListItem(nameList[name].ToString()));
}
Ваша проблема.
это должно больше походить
foreach (string name in nameList){
ddl.Items.Add(new ListItem(name.ToString()));
}
, Но мне на самом деле нравится предложение Marcus немного лучше.
Вы получаете ту ошибку, потому что набор nameList
List
, таким образом, необходимо получить доступ к нему с помощью индекса не строка (Вы используете имя).
, Таким образом, можно записать:
foreach (string name in nameList){
ddl.Items.Add(name);
}
BTW лучший способ сделать это:
ddl.DataSource = nameList;
ddl.DataBind();