Нет значения свойства в select / option при использовании Html.Выпадающий список для System.Linq.Enumerable

#c# #html #linq #asp.net-core #asp.net-core-mvc

#c# #HTML #linq #asp.net-core #asp.net-core-mvc

Вопрос:

У меня есть страница Razor со следующим кодом для создания выпадающего списка от 1 до 31 дня месяца. Выпадающий список отображается правильно в браузере, но в выводе HTML отсутствует свойство value (за исключением первого параметра, который добавляется вручную).

Как я могу заставить его отображать свойство value?

@Html.DropDownListFor(model => model.Day, new SelectList(System.Linq.Enumerable.Range(1, 31)), string.Empty, new { @class = "form-control" })

Визуализированный вывод:

 <select class="form-control" data-val="true" id="Day" name="Day">
    <option value=""></option>
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>
    <option>6</option>
    <option>7</option>
    <option>8</option>
    <option>9</option>
    <option>10</option>
    <option>11</option>
    <option>12</option>
    <option>13</option>
    <option>14</option>
    <option>15</option>
    <option>16</option>
    <option>17</option>
    <option>18</option>
    <option>19</option>
    <option>20</option>
    <option>21</option>
    <option>22</option>
    <option>23</option>
    <option>24</option>
    <option>25</option>
    <option>26</option>
    <option>27</option>
    <option>28</option>
    <option>29</option>
    <option>30</option>
    <option>31</option>
</select>
 

Комментарии:

1. @RyanWilson System.Linq.Enumerable.Range(1, 31).Select(z => new SelectListItem(z.ToString(), z.ToString()).ToList() не компилируется. Я изменил его на Enumerable.Range(1, 31).Select(t => new SelectListItem(t.ToString(), t.ToString())).ToList(); , и теперь он показывает type элемент списка выбора в раскрывающемся списке imgur.com/a/SYVpF9P

Ответ №1:

Это то, что я в итоге сделал:

Контроллер:

ViewBag.Days = Enumerable.Range(1, 31).Select(t => new { Value = t, Text = t });

Вид:

@Html.DropDownListFor(model => model.Day, new SelectList(ViewBag.Days, "Value", "Text"), string.Empty, new { @class = "form-control" })