ASP.NET Core: параметр маршрута в действии отправки формыC#

Место общения программистов C#
Anonymous
ASP.NET Core: параметр маршрута в действии отправки формы

Сообщение Anonymous »

У меня есть страница Index Razor, реализованная с разбиением на страницы на основе руководства здесь. Я также реализовал выбираемый пользователем размер страницы (подробности здесь не показаны для краткости, поскольку они не применимы к этой проблеме), и все они у меня работают. Я пытаюсь добавить функцию поиска с той же страницы здесь. У меня также работает функция поиска.
Что я пытаюсь заставить работать, так это маршрутизацию текущего размера страницы в метод Get при нажатии кнопки поиска.
Вот моя форма поиска с главной страницы:


Find by @nameof(Data.Audit.Log.Level):

Please select

|
Back to full List



А вот метод Get на странице Index:
public PaginatedList Logs { get; set; }

public LogLevel? LevelFilter { get; set; }

public async Task OnGetAsync(int? pageIndex, int? pageSize, int? prevPageSize, LogLevel? levelFilter)
{
LevelFilter = levelFilter;

if (prevPageSize != null && pageSize != null && pageIndex != null && pageIndex > 1)
{
pageIndex = PaginatedList.CalculateNewPageIndex(pageIndex.Value, prevPageSize.Value, pageSize.Value);
}

var query = DbContext.Logs.AsQueryable();

if(levelFilter != null)
{
query = query.Where(x => x.Level == levelFilter.ToString());
}

Logs = await PaginatedList.CreateAsync(query.OrderByDescending(x => x.Logged).AsNoTracking(), pageIndex ?? 1, pageSize ?? _defaultPageSize);
}

Как вы можете видеть в разметке .cshtml, я попытался поместить asp-route-pageSize в форму, ввод и даже в 'a ' в форме. Кажется, HTML-код сгенерирован правильно:
Изображение

Кнопка «Назад к полному списку» работает правильно и сохраняет размер страницы, однако кнопка «Поиск» теряет его. Единственный добавленный параметр запроса в этом сценарии — это levelFilter. Есть идеи, что мне не хватает/что я делаю неправильно?
ОБНОВЛЕНИЕ. Вот весь .cshtml для справки:
@ViewData["Title"]



Find by @nameof(Data.Audit.Log.Level):

Please select

|
Back to full List







@Html.DisplayNameFor(model => model.Logs[0].Logged)


@Html.DisplayNameFor(model => model.Logs[0].Level)


@Html.DisplayNameFor(model => model.Logs[0].Message)


@Html.DisplayNameFor(model => model.Logs[0].UserName)


@Html.DisplayNameFor(model => model.Logs[0].Category)


Action




@foreach (var item in Model.Logs)
{


@Html.DisplayFor(modelItem => item.Logged)


@Html.DisplayFor(modelItem => item.Level)


@Html.DisplayFor(modelItem => item.Message)


@Html.DisplayFor(modelItem => item.UserName)


@Html.DisplayFor(modelItem => item.Category)


Details


}



@if (Model.Logs.HasPrevPage)
{
Prev
}

@if (Model.Logs.ShowFirstPage)
{
1
...
}

@for (int i = Model.Logs.MinPage; i

Подробнее здесь: https://stackoverflow.com/questions/768 ... mit-action

Вернуться в «C#»