Может кто-то объяснить, пожалуйста, следующий ниже код, особенно new[]
@Html.DropDownListFor(x => x.WillAttend,new[] {
new SelectListItem() { Text = "Yes, I'll be there", Value = bool.TrueString},
new SelectListItem() { Text = "No, I can't come", Value = bool.FalseString}}, "Choose an option")
Создает ли new[]
новый список выбора?
new[]
не является анонимным типом, это неявно типизированный массив типа SelectListItem[]
. Тип массива (SelectListItem
) выводится при добавлении элементов типа SelectListItem
с использованием инициализатора массива.
Вы используете эту перегрузку DropDownListFor
. Поскольку SelectListItem[]
происходит от IEnumerable<SelectListItem
, это работает. Вы также могли бы использовать List
например: new List<SelectListItem> { new SelectListItem {... }, new SelectListItem {... } }
.
Создает ли новый [] новый список выбора?
new[]
создает новый объект Array. Учитывая, что вторым параметром DropDownListFor
является IEnumerable<SelectListItem>
, массив плавно переходит к требуемому типу.
@Html.DropDownListFor()
выглядит как оператор Razor для механизма просмотра Razor. Этот оператор будет генерировать список выбора HTML. Аргумент этой функции (материал между ()
) составляет содержимое списка, который в этом случае генерируется из оператора new[]{...}
который создает новый массив, заполненный элементами в {}
в этом случае SelectListItem
s.
Заявление в целом должно генерировать нечто похожее:
<select>
<option value="" selected="selected" disabled="disabled">Choose an option</option>
<option value="true">Yes, I'll be there</option>
<option value="false">No, I can't come</option>
</select>
Код создает новый массив типа SelectList
и добавляет к нему два новых элемента SelectListItem
. Это ваш новый раскрывающийся список.
Правильно, новый [] в массиве, инициализатор списка. Таким образом, в этом случае вы создаете массив или список, я не знаю тип, который выпадающий список принимает, и он имеет 2 элемента типа SelectListItem.