Мне нужно изменить следующий выпадающий список в моем приложении asp. net, теперь я должен добавить значения в зависимости от типа пользователя, который раньше не требовался. Следующий код работает нормально, но, очевидно, я жестко кодирую ввод элементов.
@Html.DropDownListFor(
model => model.Vote,
new SelectList(
new List<SelectListItem> {
new SelectListItem { Selected=true, Text = "Randy", Value = "1" },
new SelectListItem { Selected=false, Text = "Richard", Value = "2" },
new SelectListItem { Selected=false, Text = "Bubbles", Value = "3" },
new SelectListItem { Selected=false, Text = "Julian", Value = "4" }
},
"Value",
"Text"
),
htmlAttributes: new { @class = "form-control" }
)
Я получаю список от контроллера и могу через него l oop, но я ' я не могу использовать эту информацию как SelectListItem
s. Obvioulsy, первый и последний SelectListItem
s являются специальными, первый имеет свойство Selected
, установленное на true
, в то время как остальные установлены на false
, таким образом, первый выбирается по умолчанию , Последний, с другой стороны, не имеет запятой перед закрывающим тегом }
, как это делают предыдущие, так вот как я зацикливаюсь.
@for (var i = 0; i < candidatos.Count(); i++)
{
if (i == 0)
{
<h4>"First candidate:" + candidatos.ElementAt(i)</h4>
}
else if (i < candidatos.Count() - 1)
{
<h4>"Not first nor last:" + candidatos.ElementAt(i)</h4>
}
else
{
<h4>"Last candidate:" + candidatos.ElementAt(i)</h4>
}
}
Так что это вывод правильно, но мне действительно нужна помощь с синтаксисом, я изо всех сил пытался объединить эту итерацию с синтаксисом, который я жестко запрограммировал и правильно показывает элементы как элементы в выпадающем списке, но пока не могу понять, как это сделать.
Вот как я пытался объединить обе вещи, но я получаю ошибки.
@Html.DropDownListFor(model => model.Voto, new SelectList(new List<SelectListItem> {
for (var i = 0; i < candidatos.Count(); i++)
{
if (i == 0)
{
new SelectListItem { Selected = true, Text = candidatos.ElementAt(i + 1), Value = (i + 2).ToString() },
}
else if (i < candidatos.Count() - 1)
{
{ new SelectListItem { Selected = false, Text = candidatos.ElementAt(i + 1), Value = (i + 2).ToString() },
}
else
{
{ new SelectListItem { Selected = false, Text = candidatos.ElementAt(i + 1), Value = (i + 2).ToString() } }, "Value", "Text" ),
htmlAttributes: new { @class = "form-control" })
}
}
браузер кричит на меня, говоря, что выражение нуждается в закрытии }
после
@Html.DropDownListFor(model => model.Voto, new SelectList(new List<SelectListItem> {
Я думаю, он не осознает, что я предоставляю соответствующие закрывающие теги и пропускаю элементы, используя for для l oop, но, очевидно, потому что я делаю это неправильно.