Я думаю, что мне не хватает основополагающих принципов работы форм MVC. У меня есть форма поиска на моей домашней странице с пятью или шестью различными полями, которые пользователь может выполнить. Таким образом, у меня есть этот POSTing для моих результатов, просто отлично. Действие Result выглядит следующим образом:
[HttpPost]
public ActionResult Results(SearchModel model)
{
ResultsModel results = new ResultsModel();
results.ResultList = SearchManager.Search(model).ToList();
return View("Results", results);
}
Я упростил вышеупомянутый метод для этого сообщения, но идея такая же. Так что все это прекрасно работает. Моя страница результатов отображается со списком результатов, и мой пользователь находится по следующему URL-адресу:
Итак... теперь я хочу сделать что-то довольно распространенное. У меня есть два раскрывающихся списка на странице результатов. "Сортировать по" и "Количество результатов на страницу". Как мне это сделать и отправить полный набор данных модели обратно на контроллер, чтобы я мог запрашивать новые параметры? В действительности класс SearchModel содержит около 60 различных полей. Потенциально все эти данные могут содержаться в модели. Как вы сохраняете это на странице "post back"?
В этом же вопросе я немного озадачен тем, как делать пейджинг. Мои пейджинговые ссылки перейдут на URL-адрес, например:
Но это предполагает, что мы отвечаем на запрос GET (я не хочу 60 полей данных в querystring) и что данные модели передаются между запросами GET, о которых я знаю, не так.
Как я уже сказал, я думаю, что мне не хватает основополагающих принципов работы с MVC 3, моделями и сообщениями в форме.
Может ли кто-нибудь помочь мне указать мне в правильном направлении? Я буду рад изменить/обновить этот пост по мере необходимости, чтобы прояснить ситуацию.
РЕДАКТИРОВАТЬ. Я также хотел указать, я бы хотел избежать хранения модели представления в переменной сеанса. В конечном итоге этот сайт будет сбалансирован с нагрузкой в веб-ферме, и я действительно стараюсь избежать использования сеанса, если это возможно. Однако, если это единственная альтернатива, я настрою другого поставщика состояния сеанса, но я бы предпочел не делать этого.