У меня есть страница поиска, где вы можете искать клиента по имени, номеру телефона, номеру счета или номеру клиента. Затем я просматриваю 7 разных баз данных, чтобы попытаться сопоставить эти вещи, чтобы вернуть результаты. Из-за этого я предпочел бы только запустить поиск один раз и запомнить результаты, которые я могу отобразить на страницах. Ниже представлен ViewModel, который я использую для моей страницы SearchResults.MVC3 Сохранить результаты поиска при смене страниц
public class SearchResultsViewModel
{
public IEnumerable<CustomerSearchResults> SearchResults { get; set; }
public PagingInfo PagingInfo { get; set; }
}
public class PagingInfo
{
public int TotalItems { get; set; }
public int ItemsPerPage { get; set; }
public int CurrentPage { get; set; }
public int TotalPages {
get { return (int)Math.Ceiling((decimal)TotalItems/ItemsPerPage); }
}
}
Вот код контроллера для SearchResults Page
public ActionResult SearchResults(int page = 1)
{
SearchResultsViewModel srvm = new SearchResultsViewModel
{
SearchResults = res.Skip((page - 1) * pageSize).Take(pageSize),
PagingInfo = new PagingInfo { CurrentPage = page, ItemsPerPage = pageSize, TotalItems = res.Count() }
};
ViewBag.CurrentPage = page;
return View("SearchResults", srvm);
}
[HttpPost]
public ActionResult Index(IndexViewModel vm)
{
res = GetSearchResults(vm);
return SearchResults();
}
Рез является глобальной переменной в контроллере. Я думал, может быть, я могу сохранить данные таким образом, чтобы показывать на разных страницах, но обнаружил довольно быстро, что каждый раз, когда я вытягиваю представление, я получаю новый контроллер, поэтому это не работает.
Коды View просто отображают результаты поиска в таблице и имеют HTML-помощник внизу, который показывает ссылки на номера страниц. Ссылки на номера страниц являются якорями, вызывающими действие SearchResults с правильным номером страницы.
Могу ли я сохранить данные, чтобы использовать страницу формы на странице, или это невозможно? Есть ли лучший способ для меня сделать это?
Это решение отлично работает. Я относительный новичок, когда речь идет о веб-программировании, поэтому я все еще изучаю все доступные механизмы. Спасибо за помощь. –