Выберите привязку вспомогательной функции тега с массивом или списком

Как мой следующий метод действия контроллера может привязать список целых чисел к Select Tag Helper в моем проекте ASP.NET Core without using ModelView? Или без ModelView этого сделать нельзя?

Метод действия:

public IActionResult ListofDays()
        {
            IEnumerable<int> DaysList = Enumerable.Range(1, 7).ToList();
            return View(DaysList);
        }

Выберите тег:

<select asp-for="???" asp-items="???"></select>

person nam    schedule 12.08.2016    source источник


Ответы (1)


Вы можете преобразовать массив int в список SelectListItem, который можно использовать в качестве значения свойства asp-items вспомогательной функции тега select.

public IActionResult Index()
{
    var daysList =Enumerable.Range(1, 7)
       .Select(g => new SelectListItem {Value = g.ToString(), Text =g.ToString()}).ToList();
    return View(daysList);
}

Теперь в представлении, которое строго типизировано для списка SelectListItem,

@model List<SelectListItem>
<form asp-action="Index" asp-controller="Home">
    <select name="MyDay" asp-items="Model"></select>
    <input type="submit"/>
</form>

Когда вы отправляете форму, выбранный день будет в элементе формы MyDay. Вы можете использовать параметр с таким же именем в своем методе действия HttpPost для его получения.

Для справки: Выберите помощник по тегам в MVC 6

person Shyju    schedule 12.08.2016
comment
Спасибо за попытку помочь. Каким будет объявление @model в представлении? Я пробовал @model List<int>, но это не сработало. - person nam; 12.08.2016
comment
Извини ! Я пропустил эту часть. Это должна быть коллекция / список SelectListItem, как я уже упоминал в ответе. - person Shyju; 12.08.2016
comment
Оно работает. Спасибо - особенно за то, что вы правильно объяснили свое решение и добавили ссылку на другой ответ, поскольку я использую его для других Select Tag Helper сценариев. - person nam; 12.08.2016