В настоящее время я пытаюсь использовать taghelpers в asp.net 5. Я хочу использовать помощник тега select со списком из ViewBag. Все, что я вставляю в поле asp-for, дает мне ошибку, потому что он пытается вытащить его из модели, которая является IEnumerable вместо мешка представления.Выберите TagHelper, используя List из ViewBag
Я хочу, чтобы заменить это:
@model IEnumerable<InvoiceIT.Models.Invoice>
@using (Html.BeginForm())
{
<p>
@Html.DropDownList("Companies", String.Empty)
<input type="submit" value="Filter" class="btn btn-default" />
</p>
}
с этим:
@model IEnumerable<InvoiceIT.Models.Invoice>
<form asp-controller="Invoice" asp-action="Index" method="post" class="form-horizontal" role="form">
<select asp-for="????" asp-items="ViewBag.Companies" class="form-control">
</select>
<input type="submit" value="Save" class="btn btn-default" />
</form>
Вот как я заполнить список выбора в контроллере:
ViewBag.Companies = new SelectList(await DbContext.Company.ToListAsync(), "CompanyID", "Name");
Используя ваш точный код, я получаю ошибку компиляции в поле asp-for: «дерево выражений не может содержать динамическую операцию». – Reafidy
Ahh, хорошая точка. Обновленный ответ, отражающий правильное использование (см. Добавленные биты внутри '@ {}'). –
Кажется, что он приближается по мере его компиляции, однако вместо раскрывающегося списка он добавляет элемент управления списком, и он не содержит данных. Если я изменю его на 'asp-for =" @ company "asp-items =" @ ViewBag.Companies ", тогда я получаю тот же список, но в нем есть правильные данные. Как мне получить раскрывающийся список? – Reafidy