首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Asp.net ()和OnPostAsync()方法中设置OnGetAsync()和OnPostAsync()方法中分页功能的页面大小

在Asp.net ()和OnPostAsync()方法中设置OnGetAsync()和OnPostAsync()方法中分页功能的页面大小
EN

Stack Overflow用户
提问于 2022-05-03 12:25:58
回答 1查看 296关注 0票数 0

我面临的问题,同时设置页面大小,同时实现分页feature.Any帮助将受到高度赞赏。

我正在为binding.Initially使用部分视图分页和模型类,我将其设置为默认页面大小,并且能够在调用OnGetAsync() method.Then时获得页面大小值,我有一个选择下拉列表,在这里我要更改页面大小,然后进行回发,并能够在OnPostAsync()方法中获得新值,并能够将其赋值给method.Then属性。

现在的问题是,当我选择任何其他页面索引时,它将再次调用OnGetAsync()方法,并将获取页面大小的默认模型属性值,因此无法保留从select下拉列表和获取记录中选择的值。

我曾经尝试过TempData[]变量来保存交叉回发,但是它没有帮助,也找不到way.Please帮助。下面是我正在使用的代码部分。

剃须刀页:

代码语言:javascript
运行
复制
<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>

模型类:

代码语言:javascript
运行
复制
public class PaginationInfo
    {
        
        public int PageSize { get; set; } = 10;

        public int CurrentPage { get; set; } = 1;
    }

代码背后:

代码语言:javascript
运行
复制
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"]);
            }
EN

回答 1

Stack Overflow用户

发布于 2022-05-04 08:46:49

您可以尝试使用会话来存储数据:

Startup.cs:

代码语言:javascript
运行
复制
 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 =>
            {
                .........
            });
        }

代码背后:

代码语言:javascript
运行
复制
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"]);
            }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72099361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档