ASP.NET Core Razor Pages множественный выбор ввода и разбиение на страницы - PullRequest
0 голосов
/ 19 января 2019

Я следую официальному руководству Microsoft для ASP.NET Core Razor Pages и работаю над настройкой части нумерации страниц, расположенной здесь , для работы на моем сайте.

public async Task OnGetAsync(string sortOrder,
    string currentFilter, string searchString, int? pageIndex)
{
    CurrentSort = sortOrder;
    NameSort = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
    DateSort = sortOrder == "Date" ? "date_desc" : "Date";
    if (searchString != null)
    {
        pageIndex = 1;
    }
    else
    {
        searchString = currentFilter;
    }

    CurrentFilter = searchString;

    IQueryable<Student> studentIQ = from s in _context.Student
                                    select s;
    if (!String.IsNullOrEmpty(searchString))
    {
        studentIQ = studentIQ.Where(s => s.LastName.Contains(searchString)
                               || s.FirstMidName.Contains(searchString));
    }
    switch (sortOrder)
    {
        case "name_desc":
            studentIQ = studentIQ.OrderByDescending(s => s.LastName);
            break;
        case "Date":
            studentIQ = studentIQ.OrderBy(s => s.EnrollmentDate);
            break;
        case "date_desc":
            studentIQ = studentIQ.OrderByDescending(s => s.EnrollmentDate);
            break;
        default:
            studentIQ = studentIQ.OrderBy(s => s.LastName);
            break;
    }

    int pageSize = 3;
    Student = await PaginatedList<Student>.CreateAsync(
        studentIQ.AsNoTracking(), pageIndex ?? 1, pageSize);
}

Для моего сайта эквивалент SearchString является полем выбора. Это передается на страницу в виде массива строк. Я не могу найти документацию о том, как отформатировать это в cshtml части ссылки, которая работает для обычной строки.

По сути, мне нужно получить приведенный ниже asp-route-currentFilter для работы со строковым массивом.

<a asp-page="./Index"
   asp-route-sortOrder="@Model.CurrentSort"
   asp-route-pageIndex="@(Model.Student.PageIndex - 1)"
   asp-route-currentFilter="@Model.CurrentFilter"
   class="btn btn-default @prevDisabled">
    Previous
</a>
<a asp-page="./Index"
   asp-route-sortOrder="@Model.CurrentSort"
   asp-route-pageIndex="@(Model.Student.PageIndex + 1)"
   asp-route-currentFilter="@Model.CurrentFilter"
   class="btn btn-default @nextDisabled">
    Next
</a>

Что я должен изменить, чтобы сделать это?

1 Ответ

0 голосов
/ 23 января 2019

asp-route-CurrentFilter не удалось назначить массив. Вы можете использовать @Url.Page для назначения пользовательских данных маршрута. Здесь можно указать .

public string[] CurrentFilter { get; set; }
public async Task OnGetAsync(string sortOrder,string[] currentFilter,string[] searchString,int? pageIndex)

.cshtml:

<a href="@Url.Page("./Index", 
                    new {
                         sortOrder= Model.CurrentSort,
                         currentFilter = Model.CurrentFilter, 
                         pageIndex= Model.Student.PageIndex +1
                    })"
                    class="btn btn-default @nextDisabled">
Next</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...