Asp.net mvc форма пост и пейджинг - PullRequest
2 голосов
/ 31 декабря 2010

У меня есть метод действия Search, который вызывается при публикации формы.Там могут быть тысячи результатов поиска на основе опубликованных значений формы.Я хочу, чтобы страница поиска отображалась постранично, но как узнать, какие значения формы были опубликованы впервые?так что я могу вызвать Search View, передав параметры страницы.

Ответы [ 2 ]

2 голосов
/ 31 декабря 2010

Лучшим подходом было бы принять безгражданство системы. Каждый раз, когда вы визуализируете представление, включите в страницу значения, которые вам понадобятся в следующем запросе действия. Они могут быть добавлены в строку запроса в ссылке действия, добавлены в качестве элементов формы, и ссылка вызывает POST (последний звучит лучше всего, поскольку поисковый термин, скорее всего, сам по себе является элементом ввода формы).

Просто предварительно заполняйте ввод текста поискового запроса (я полагаю, это то, что вы используете) указанным поисковым значением при каждом отображении представления. Номер страницы может быть добавлен к строке запроса в ссылках на пейджинг. И т.д.

Таким образом, каждый последующий запрос полностью реализуется и не зависит от предыдущих запросов. Термин поиска, номер страницы, возможно, размер страницы и т. Д. Должны каждый раз передаваться действию.

0 голосов
/ 31 декабря 2010

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

    public class QuerySettings
    {
        private int page;

        public QuerySettings()
            : this(true)
        { 
        }

        public QuerySettings(bool pagingEnabled)
        {
            this.Page = 1;
            this.Rows = 10;
            this.PagingEnabled = pagingEnabled;
        }

        public int Rows { get; set; }
        public string SortColumn { get; set; }
        public string SortOrder { get; set; }
        public string Search { get; set; }
        public bool PagingEnabled { get; set; }

        public int Page
        {
            get { return page; }
            set { page = Math.Max(1, value); }
        }
    }

Этот объект передается методам обслуживания в бизнес-уровне, который может использовать переданную информацию для применения соответствующей сортировки / фильтрации. Затем они возвращают данные, завернутые в:

public class QueryResult<T>
{
        public QueryResult()
        { 
        }

        public QueryResult(QuerySettings settings, IList<T> items, int currentPage, int totalPages, int totalItems)
        {
            Settings = settings;
            Items = items;
            CurrentPage = currentPage;
            TotalPages = totalPages;
            TotalItems = totalItems;
        }

        public QuerySettings Settings { get; private set; }
        public int CurrentPage { get; private set; }
        public int TotalPages { get; private set; }
        public int TotalItems { get; private set; }
        public IList<T> Items { get; private set; }

        public IEnumerable<T> AsEnumerable()
        {
            return this.Items;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...