Шаблоны пейджинга и сортировки MVC: как сортировать или повторно использовать критерии формы - PullRequest
0 голосов
/ 26 апреля 2010

Каков лучший шаблон ASP.NET MVC для данных подкачки, когда данные фильтруются по критериям формы?

Этот вопрос похож на: Сохранить данные в .net mvc , но наверняка есть лучший ответ?

В настоящее время, когда я нажимаю кнопку поиска, это действие называется:

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Search(MemberSearchForm formSp, int? pageIndex, string sortExpression)
    {}

Это идеально подходит для первоначального отображения результатов в таблице.

Но я хочу, чтобы ссылки на номера страниц или ссылки на выражения для сортировки повторно публиковали текущие данные формы (пользователь вводил их в первый раз - сохранялось, потому что они возвращаются в виде viewdata) вместе с дополнительными параметрами маршрута «pageIndex» или « sortExpression»,

Может ли ActionLink или RouteLink (который я использовал бы для номеров страниц) отправить форму по указанному URL-адресу?

<%= Html.RouteLink("page 2", "MemberSearch", new { pageIndex = 1 })%>

В данный момент они просто выполняют базовое перенаправление и не публикуют значения формы, поэтому страница поиска загружается свежо.

В обычных старых веб-формах я использовал для сохранения параметров поиска (MemberSearchForm) в ViewState и для повторного использования события подкачки или сортировки GridView.

Ответы [ 3 ]

2 голосов
/ 26 апреля 2010

Вы можете выполнить GET вместо POST. если ваш запрос возвращает результаты поиска, GET может иметь больше смысла в любом случае. Преимущество в том, что все ваши поля поиска закодированы в URL. Поэтому, когда вы выполняете страницу или сортируете по существующему URL, ваши данные сохраняются.

2 голосов
/ 26 апреля 2010

Одним из возможных решений является присоединение обработчика щелчков JavaScript к ссылкам на пейджеры, которые будут отправлять форму путем обновления скрытого поля, содержащего номер страницы. Таким образом, вы получите все критерии поиска в действии контроллера.

Другая возможность - преобразовать эти ссылки на пейджеры в кнопки отправки и поместить их в форму.

Третья возможность - использовать Session для сохранения критериев поиска.

1 голос
/ 08 мая 2010

У меня есть пример, который использует MvcContrib Grid и Pager здесь:

http://weblogs.asp.net/rajbk/archive/2010/05/08/asp-net-mvc-paging-sorting-filtering-using-the-mvccontrib-grid-and-pager.aspx

...