Использование multiselectlist для фильтрации таблицы ничего не делает (ASP.NET основные страницы бритвы)
У меня есть модель "ppcc_matrix", которую я скомпоновал (страницы razor с использованием EF). На моей индексной странице я по умолчанию показываю всю таблицу целиком.
У меня есть два фильтра, созданных для пользователя, чтобы сузить эту таблицу, включая MultiSelectList "DeptList" и SelectList "EmployeeList".
Когда они делают свой выбор и нажимают кнопку "Отправить", он возвращается через мой OnGet, чтобы посмотреть на выбранные значения, и если есть сделанные выборы, он сохраняет выбранные значения для просмотра. Затем он также использует LINQ, чтобы изменить мой основной объект на IQueryable и запросить соответствующие результаты для отображения новой таблицы.
Мой список выбора "EmployeeList" теперь правильно фильтрует таблицу (хотя он все еще не сохраняет мой выбор для просмотра в раскрывающемся списке). У меня есть и мой SelectList, и MultiSelectList, которые правильно строят мои выборки в URL - адрес, но мой MultiSelectList ничего не делает (не фильтрует таблицу по моим выборкам).
Эта статья была полезна:
Выберите списки в форме Razor Pages[^]
Что я уже пробовал:
Индекс.cshtml по (сокращенный):
<div class="table-responsive"> <form asp-page="./Index" method="get"> <div class="form-actions no-color form-inline"> <p> <div> Dept Cd<br /> <select multiple class="form-control" style="margin-right: 10px; margin-left: 5px;" asp-items="Model.DeptList" value="@Model.SelDepts"></select> </div> Name <select class="form-control col-md-2" style="margin-left: 5px;" asp-items="Model.EmployeeList" value="@Model.SelEmp"> <option disabled selected style="display:none">--select--</option> </select> <input type="submit" value="Search" class="btn btn-primary btn-sm" style="margin-right: 5px; margin-left: 5px;" /> | <a asp-page="./Index" class="btn btn-dark btn-sm" style="margin-right: 5px; margin-left: 5px;">Back to full List</a> </p> </div> </form> <table class="table-condensed table-bordered table-striped nowrap" width="100%" cellspacing="0" style="margin-top: 10px"> <thead> <tr> <th> <a asp-page="./Index" asp-route-selEmp="@Model.SelEmp" asp-route-selDepts="@Model.SelDepts" >Department Cd</a> </th> <th> <a asp-page="./Index" asp-route-selEmp="@Model.SelEmp" asp-route-selDepts="@Model.SelDepts" >Specialist</a> </th> </tr> </thead> <tbody> @foreach (var item in Model.ppcc_matrix) { <tr> <td> @Html.DisplayFor(modelItem => item.ppcc_deptCds.dept_cd) </td> <td> @Html.DisplayFor(modelItem => item.employees.employee_nm) </td> </tr> } </tbody> </table> </div>
Индекс.cshtml по.КС (сокращенный):
[BindProperty] public MultiSelectList DeptList { get; set; } [BindProperty] public SelectList EmployeeList { get; set; } public int[] SelDepts { get; set; } public int SelEmp { get; set; } public async Task OnGetAsync(int selEmp, int[] selDepts, int curSelEmp, int[] curSelDepts) { DeptList = new MultiSelectList(_context.ppcc_deptCds, "Id", "dept_cd", SelDepts); EmployeeList = new SelectList(_context.employees, "Id", "employee_nm", SelEmp); if (curSelDepts.Any()) { pageIndex = 1; } else { curSelDepts = selDepts; } if (curSelEmp != 0) { pageIndex = 1; } else { curSelEmp = selEmp; } SelEmp = curSelEmp; SelDepts = curSelDepts; IQueryable<ppcc_matrix> ppcc_matrixIQ = from s in _context.ppcc_matrix select s; if (curSelDepts.Any()) { ppcc_matrixIQ = ppcc_matrixIQ.Where(s => s.ppcc_deptCdsID.Equals(curSelDepts)); } if (curSelEmp != 0) { ppcc_matrixIQ = ppcc_matrixIQ.Where(s => s.employeesID.Equals(curSelEmp)); } }
Richard Deeming
Попробуйте удалить его @
с самого начала вашей жизни asp-for
ценности.
Member 14164795
Прогресс.. Теперь, когда я делаю выбор и поиск, он использует значение по умолчанию 0 вместо выбранного мною идентификатора.