我面临的问题,同时设置页面大小,同时实现分页feature.Any帮助将受到高度赞赏。
我正在为binding.Initially使用部分视图分页和模型类,我将其设置为默认页面大小,并且能够在调用OnGetAsync() method.Then时获得页面大小值,我有一个选择下拉列表,在这里我要更改页面大小,然后进行回发,并能够在OnPostAsync()方法中获得新值,并能够将其赋值给method.Then属性。
现在的问题是,当我选择任何其他页面索引时,它将再次调用OnGetAsync()方法,并将获取页面大小的默认模型属性值,因此无法保留从select下拉列表和获取记录中选择的值。
我曾经尝试过TempData[]变量来保存交叉回发,但是它没有帮助,也找不到way.Please帮助。下面是我正在使用的代码部分。
剃须刀页:
<form method="post">
<div class="col-3 pr-0">
<label>Items per page</label>
<select id="ddlselect" asp-for="@Model.Pagination.PageSize class="form-control" asp-items="@Model.Pagination.PageSizeList" onchange="this.form.submit()"></select>
</div>
<div>
<partial name="_Pagination" model="@Model.Pagination" />
</div>
</form>
模型类:
public class PaginationInfo
{
public int PageSize { get; set; } = 10;
public int CurrentPage { get; set; } = 1;
}
代码背后:
public class IndexModel : PageModel
{
private readonly IConfiguration _configuration;
private readonly HttpClient _httpClient;
[BindProperty(SupportsGet = true)]
public PaginationInfo Pagination { get; set; }
}
public async Task<IActionResult> OnGetAsync(int CurrentPage = 1)
{
try
{
var _pagsize=0;
if (TempData["PageSize"] == null)
_pagsize = Pagination.PageSize;
else
_pagsize = (int)TempData["PageSize"];
Pagination = GetPagination(CurrentPage, _pagsize);
}
}
public async Task<IActionResult> OnPostAsync()
{
try
{
TempData["PageSize"] = Pagination.PageSize;
Pagination = GetPagination(this.Pagination.CurrentPage, (int)TempData["PageSize"]);
}
发布于 2022-05-04 08:46:49
您可以尝试使用会话来存储数据:
Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
............
services.AddDistributedMemoryCache();
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromDays(1);
options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
.........
app.UseAuthorization();
//add UseSession here
app.UseSession();
app.UseEndpoints(endpoints =>
{
.........
});
}
代码背后:
public async Task<IActionResult> OnGetAsync(int CurrentPage = 1)
{
try
{
var _pagsize=0;
if (HttpContext.Session.GetInt32("PageSize"); == null)
_pagsize = Pagination.PageSize;
else
_pagsize = HttpContext.Session.GetInt32("PageSize");;
Pagination = GetPagination(CurrentPage, _pagsize);
}
}
public async Task<IActionResult> OnPostAsync()
{
try
{
HttpContext.Session.SetInt32("PageSize", Pagination.PageSize);
Pagination = GetPagination(this.Pagination.CurrentPage, (int)TempData["PageSize"]);
}
https://stackoverflow.com/questions/72099361
复制相似问题