OutputCache
будет кешировать результаты для каждого пользователя. Почему бы вам не попытаться сохранить информацию в куки с URL страницы и фильтровать информацию. Каждый раз, когда выполняется действие, читайте куки и заполняйте модель (пользовательскую модель для поиска) найденными значениями (если они соответствуют URL страницы, действие в этой ситуации). Передайте модель в представление и дайте ей снова заполнить текстовые поля критериев поиска и флажки.
UPDATE:
Когда пользователь заполняет текстовые поля фильтра поиска, вы как-то передаете эту информацию контроллеру. Вероятно, как некий строго типизированный объект.
Допустим, ваши пользователи вводят следующую информацию:
- Критерии
- Дата начала
- EndDate
Существует модель с именем SearchCriteria, определенная как:
public class SearchCriteria
{
public string Criteria { get; set; }
public DateTime? StartDate { get; set; }
public DateTime? EndDate { get; set; }
}
Ваше действие может выглядеть примерно так:
[HttpGet]
public ViewResult Search()
{
SearchCriteria criteria = new SearchCriteria();
if (Request.Cookies["SearchCriteria"] != null)
{
HttpCookie cookie = Request.Cookies["SearchCriteria"];
criteria.Criteria = cookie.Values["Criteria"];
criteria.StartDate = cookie.Values["StartDate"] ?? null;
criteria.EndDate = cookie.Values["EndDate"] ?? null;
}
return View(criteria);
}
[HttpPost]
public ActionResult Search(SearchCriteria criteria)
{
// At this point save the data into cookie
HttpCookie cookie;
if (Request.Cookies["SearchCriteria"] != null)
{
cookie = Request.Cookies["SearchCriteria"];
cookie.Values.Clear();
}
else
{
cookie = new HttpCookie("SearchCriteria");
}
cookie.Values.Add("Criteria", criteria.Criteria);
if (criteria.StartDate.HasValue)
{
cookie.Values.Add("StartDate", criteria.StartDate.Value.ToString("yyyy-mm-dd"));
}
if (criteria.EndDate.HasValue)
{
cookie.Values.Add("EndDate", criteria.EndDate.Value.ToString("yyyy-mm-dd"));
}
// Do something with the criteria that user posted
return View();
}
Это какое-то решение. Пожалуйста, поймите, что я не проверял это, и я написал это из головы. Он призван дать вам представление о том, как вы можете решить эту проблему. Возможно, вам также следует добавить Action в SearchCriteria, чтобы вы могли проверить, является ли это подходящим действием, в котором вы читали бы cookie. Кроме того, чтение и запись файла cookie следует перенести в отдельный метод, чтобы вы могли читать его из других действий.
Надеюсь, это поможет,
Huske