ASP.Net Core2 Razor Selectlist - PullRequest
       12

ASP.Net Core2 Razor Selectlist

0 голосов
/ 25 сентября 2018

Похоже, что в ASP.NET Core2 есть документация ZERO, относящаяся к выпадающему / выборочному списку с Razor Pages .

. Я хотел бы создать выпадающие списки для выбора / отображения данных.из другой таблицы.

Я подозреваю, что каждому «представлению» («Индекс», «Детали», «Создать» и «Редактировать»), скорее всего, потребуется отдельная реализация?Например: странице «Указатель и сведения» (которая только для просмотра) потребуется прочитать значение в поле, а затем извлечь соответствующий текст из справочной таблицы.

Существует масса информации там.это относится к MVC, но страницы Razor не имеют ViewBag.

Я попытался добавить

var school = _context.AdmSchool.ToList ();SelectList selectList = новый SelectList (школа, "AdmSchoolId", "AdmSchoolName", ноль);school = selectList;

в файле create.cshtml.cs («контроллер» для отсутствия имени Razor)

и

@Html.DropDownList("school", null, null, htmlAttributes: new{@class="form-control", placeholder="Select School"});

в файле Create.cshtml(просмотреть) файл.

Так есть ли у кого-нибудь опыт работы со страницами Razor?Я должен признаться, что я абсолютный новичок, поэтому, чем более многословен ваш ответ, тем больше я могу его понять.Спасибо

1 Ответ

0 голосов
/ 25 сентября 2018

Вы должны использовать помощник тега select на страницах Razor вместо помощников по старому стилю Html из более ранних версий MVC.

Данные для атрибута asp-itemsдолжно быть List<SelectListItem>:

var items = _context.AdmSchool.Select(s => new SelectListItem{
                                Value = s.AdmSchoolId.ToString(), 
                                Text = s.AdmSchoolName
                                }).ToList();

Вы можете присвоить это свойству на вашей PageModel (контроллер) или ViewData (не ViewBag):

ViewData["Items"] = items;

Затем вы назначаете эток атрибуту asp-items:

<select asp-for="SelectedAdmSchoolId" asp-items="@((List<SelectListItem>)ViewData["Items"])"></select>

Наконец, добавьте свойство в PageModel для захвата выбранного значения:

[BindProperty]
public int SelectedAdmSchoolId {get; set;}
...