Чтобы выполнить пейджинг, я следовал этому методу 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));
}
Я хочу знать, есть ли более эффективный способ сделать то же самое.