Постраничный список в MVC

Чтобы выполнить пейджинг, я следовал этому методу http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application

Теперь я пытаюсь изменить размер страницы, выбрав значение из раскрывающегося списка.

 Page Sige :
           @{
             IList<SelectListItem> pageSizeList = new List<SelectListItem>();
             pageSizeList.Add(new SelectListItem { Text = "5", Value = "5", Selected = true });
             pageSizeList.Add(new SelectListItem { Text = "10", Value = "10" });
             pageSizeList.Add(new SelectListItem { Text = "15", Value = "15" });
             pageSizeList.Add(new SelectListItem { Text = "20", Value = "20" });
             pageSizeList.Add(new SelectListItem { Text = "25", Value = "25" });
             }
             @Html.DropDownListFor(per => per.PageSize, pageSizeList, new
             {
                @onchange = "location.href='/AdminSearchResult/AdminSearchResult?pageSizeInput=' + this.value;"
             })

После выбора значения из раскрывающегося списка я внес несколько изменений в ссылки для сортировки и пейджинга. Я добавил логический параметр isPageSort следующим образом

@Html.ActionLink("  Previous Page  ", "AdminSearchResult", new { page = Model.PageNumber - 1, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter, isSortPage = "true"  }) -------For paging

@Html.ActionLink("Last Name", "AdminSearchResult", new { sortOrder = ViewBag.LastNameSortParm, currentFilter = ViewBag.CurrentFilter, isSortPage = "true" }) ------For sorting

на основе этого логического параметра я сохраняю текущий размер страницы в сеансе и извлекаю его, чтобы сохранить размер страницы в моем контроллере.

[HttpGet]
    public ActionResult AdminSearchResult(string sortOrder, int? page, int pageSizeInput = 0,  bool isSortPage = false)
    {
        int pageSize = 5;         
        int pageNumber = 1;
        if (page != null)
            pageNumber = Convert.ToInt32(page);


        if (!isSortPage)
        {
            if (pageSizeInput != 0)
                pageSize = pageSizeInput;
            Session["pageSize"] = pageSize;
        }
        else
            pageSize = (int)Session["pageSize"];

        Session["sortOrder"] = sortOrder;
        Session["pageNumber"] = pageNumber;

        var userList = SortResult(sortOrder);

        return View(userList.ToPagedList(pageNumber, pageSize));
    } 

Я хочу знать, есть ли более эффективный способ сделать то же самое.


person DotNetBeginner    schedule 17.04.2013    source источник


Ответы (1)


@dotnetBeginner Привет, вы можете использовать список подкачки в MVC, который гораздо более гибкий, чем этот ....

person Dathatreya    schedule 13.11.2014