【发布时间】:2021-05-09 00:56:55
【问题描述】:
当我单击转到下一页时,我希望将用户的选择(选择的标签和每页显示的食谱)发送到控制器,以便下一页显示应用了过滤器的食谱。
目前,当我选择标签(食品/配料)并搜索包含这些标签的食谱时,我可以保留其他用户选择的每页要显示的食谱数量,反之亦然,但是当我更改时通过分页的页面我丢失了用户选择的标签,但是我保留了每页显示多少食谱(pageSize),因为我通过每个页面的锚标签将其传递给控制器
@*Pages*@
@Html.PagedListPager((IPagedList)Model.AllRecipes, page => Url.Action("Index", new
{
page = page,
pageSize = Model.PageSize
})
我认为我需要在更改页面时/在更改页面时提交表单,因为您无法将所选标签的列表 (Model.AllTags) 传递给控制器?
谢谢
<form asp-action="index" method="get" id="FindRecipesForm">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
@* Select Tags*@
<div class="form-group">
<ul class="list-group col-md-10 col-md-offset-1">
<li class="list-group-item active" style="z-index: -10;">
All tags
</li>
<li class="list-group-item">
@for (var i = 0; i < Model.AllTags.Count(); i++)
{
<label>
<input asp-for="AllTags[i].TagId" type="hidden"> <input asp-for="AllTags[i].Name" type="hidden">
<input type="checkbox" asp-for="AllTags[i].isChecked">@Html.DisplayFor(model => Model.AllTags[i].Name)
</label>
}
</li>
</ul>
</div>
@*Sort and Filter - Open side panel button*@
<div class="sort-filter-mobile">
<button type="button" class="sort-filter-mobile-btn" onclick="openNav()">Sort and Filter</button>
</div>
@*Side Panel - Sort and Filter - Mobile*@
<div id="mySidepanel" class="sidepanel" @*style="display:none;"*@>
@*Top banner*@
<div class="top-banner-sort-filter-mobile">
<button class="sort-filter-close-btn" type="button" onclick="closeNav()"></button>
<span class="refine-results-mobile"><strong>Refine: </strong>@ViewBag.NumRecipes results</span>
</div>
<div class="search-mobile-wrapper">
@*Clear all button*@
<button type="button" class="clear-all-search-btn-mobile">Clear all</button>
<div class="pt-3">
@*Recipes per page*@
<div class="sorting-wrapper">
<label class="sort-and-result-label" for="results-per-page">Results per page</label>
@Html.DropDownListFor(m => m.PageSize, Model.PageSizeList, new { onchange = "this.form.submit()" })
</div>
</div>
</div>
</div>
@*Side Panel - Sort and Filter - Mobile- End*@
@* View Recipes*@
<div class="form-group">
@if (ViewBag.Tags != "")
{
<p class="search-results">Search results for <span class="text-primary">@ViewBag.Tags</span> (@ViewBag.NumRecipes results)</p>
}
else
{
<p class="search-results">Search results (@ViewBag.NumRecipes results)</p>
}
</div>
@*Grid*@
<div class="grid">
@foreach (var recipe in Model.AllRecipes)
{
<div>
<img class="recipe-image" src=@recipe.ImageURL style="" />
<div class="display-recipe-name" @*style="border: solid black 1px; "*@>@recipe.Name</div>
</div>
}
</div>
@*Search Recipes*@
<div class="form-group mt-1">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Search" class="btn btn-primary" />
</div>
</div>
@*Page and Recipe search result details*@
Page @(Model.AllRecipes.PageCount < Model.AllRecipes.PageNumber ? 0 : Model.AllRecipes.PageNumber) of @Model.AllRecipes.PageCount - <span style="color:darkblue; font-weight:600">@ViewBag.NumRecipes Recipes</span>
@*Pages*@
@Html.PagedListPager((IPagedList)Model.AllRecipes, page => Url.Action("Index", new
{
page = page,
pageSize = Model.PageSize
}),
new X.PagedList.Mvc.Core.Common.PagedListRenderOptions
{
//DisplayItemSliceAndTotal = true,
ContainerDivClasses = new[] { "Navigation" },
LiElementClasses = new[] { "page-item" },
PageClasses = new[] { "page-link" },
});
</form>
【问题讨论】:
标签: javascript asp.net-core .net-core pagination asp.net-core-mvc