Member 14164795 Ответов: 0

Использование 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 вместо выбранного мною идентификатора.

0 Ответов