У меня есть страница поиска, где вы можете искать клиента по имени, номеру телефона, номеру счета или номеру клиента. Затем я просматриваю 7 разных баз данных, чтобы попытаться сопоставить их, чтобы получить результаты. Из-за этого я предпочел бы выполнить поиск только один раз и запомнить результаты, которые затем можно отобразить на страницах. Ниже показана модель представления, которую я использую для своей страницы SearchResults.
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
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();
}
res - это глобальная переменная в контроллере. Я подумал, может быть, мне удастся сохранить данные таким образом, чтобы они отображались на разных страницах, но довольно быстро обнаружил, что каждый раз, когда я открываю представление, я получаю новый контроллер, так что это не работает.
Просмотр кодов просто отображает результаты поиска в таблице, а внизу есть вспомогательный HTML-код, который показывает ссылки на номера страниц. Ссылки на номера страниц являются якорями, вызывающими действие SearchResults с правильным номером страницы.
Можно ли сохранить данные для использования формы страницы на странице или это невозможно? Есть ли лучший способ для меня это сделать?