Html-помощник @Html.Pager из MvcPaging 2.0. имеет .Options(o => o.RouteValues(object RouteValues)), который может возвращать модель обратно в контроллер , но MvcPaging требует, чтобы этот помощник был заполнен IPagedList в представлении, в котором он живет. Это модель, которая генерирует таблицу и разбиение по страницам. Как лучше всего реализовать mvcpaging 2.0. используете SearchModel для поиска и Model для отображения результатов?
Пример:
< Strong>МОДЕЛИ:
public class SearchModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Person
{
[Key]
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime Dob { get; set; }
public string City { get; set; }
}
ПРОСМОТР:
Index.cshtml
@using (Ajax.BeginForm("Search", "SearchPerson", new AjaxOptions
{
HttpMethod = "GET",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "main_search_result_table_id"
}))
{
@Html.TextBoxFor(m => m.FirstName)
@Html.TextBoxFor(m => m.LastName)
}
@{Html.RenderPartial("_InitPartialEmpty");}
_ResultPartial.cshtml
@using MvcPaging
@model IPagedList
@foreach (var p in Model)
{
@p.FirstName
@p.LastName
@p.Dob
@p.City
}
@Html.Pager(Model.PageSize, Model.PageNumber,
Model.TotalItemCount, new AjaxOptions
{
UpdateTargetId = "main_search_result_table_id"
}).Options(o => o.RouteValues(Model)) //==> IPagedList
КОНТРОЛЛЕР
public ActionResult SearchPerson(int? page,SearchModel person)
{
List
result= adapter.GetPersons(person);
int currentPageIndex = page.HasValue ? page.Value - 1 : 0;
return PartialView("_ResultPartial",
result.ToPagedList(currentPageIndex, 10, result.Count()));
}
Вопрос в том, как реализовать MvcPaging2.0 с использованием модели для поиска? Или есть другой, лучший способ выполнять сложный поиск и не использовать модель для передачи данных запрос? Есть мысли?
Я использую MvcPaging 2.0. ,docs
EDIT:*
Спасибо, Дарин, за ответ, но мне удается извлеките его вот так:
*_ResultPartial.cshtml*
@Html.Pager(Model.PageSize, Model.PageNumber,
Model.TotalItemCount, new AjaxOptions
{
UpdateTargetId = "main_search_result_table_id"
}).Options(o => o.Action("AjaxPaging"))
КОНТРОЛЛЕР
public ActionResult SearchPerson(int? page,SearchModel person)
{
IQueryable query= adapter.GetPersons(person);
Session["SearchQuery"] = query;
int currentPageIndex = page.HasValue ? page.Value - 1 : 0;
List persons = query.ToList();
return PartialView("_ResultPartial",
persons.ToPagedList(currentPageIndex, 10, persons.Count()));
}
public ActionResult AjaxPaging(int? page)
{
IQueryable query = Session["SearchQuery"] as IQueryable;
int currentPageIndex = page.HasValue ? page.Value - 1 : 0;
List persons = query.ToList();
return PartialView("_ResultPartial",
persons.ToPagedList(currentPageIndex, 10, persons.Count()));
}
Подробнее здесь: https://stackoverflow.com/questions/117 ... -0-in-mvc3