Вы не должны генерировать списки опций вручную на странице просмотра. Попробуйте использовать свойство IEnumerable<SelectListItem>
внутри класса viewmodel, которое возвращает список раз на основе заданного интервала, как в примере ниже:
public IEnumerable<SelectListItem> ListOfTimeIntervals
{
get
{
var list = new List<SelectListItem>();
// range of hours, multiplied by 4 (e.g. 24 hours = 96)
int timeRange = 96;
// range of minutes, e.g. 15 min
int minuteRange = 15;
// starting time, e.g. 0:00
TimeSpan startTime = new TimeSpan(0, 0, 0);
// placeholder
list.Add(new SelectListItem { Text = "Choose a time", Value = "0", Disabled = true });
// get standard ticks
DateTime startDate = new DateTime(DateTime.MinValue.Ticks);
// create time format based on range above
for (int i = 0; i < timeRange; i++)
{
int minutesAdded = minuteRange * i;
TimeSpan timeAdded = new TimeSpan(0, minutesAdded, 0);
TimeSpan tm = startTime.Add(timeAdded);
DateTime result = startDate + tm;
list.Add(new SelectListItem { Text = result.ToString("HH:mm"), Value = result.ToString("HH:mm") });
}
return list;
}
}
Затем установите атрибут asp-items
, чтобы получить список параметров:
<select asp-for="ShiftStarts" asp-items="Model.ListOfTimeIntervals" class="form-control">
</select>
Пример для выбора временного интервала можно найти здесь .