Сохранить состояние поиска - PullRequest
2 голосов
/ 22 июня 2011

У меня есть веб-страница, которая составляет таблицу результатов поиска.пользователь может затем редактировать эти элементы.Когда пользователь возвращается на страницу, он возвращается в свое неисследованное состояние (как оно задумано).

Я хочу, чтобы он вернулся к запросу.Как я могу сохранить это состояние страницы?

@model List<MyNamespace.Models.MyModel>
@{
    ViewBag.Title = "Index";
}
<h2>
    Index</h2>
@using (Ajax.BeginForm("Search", "MyController",
    new AjaxOptions
    {
        HttpMethod = "GET",
        InsertionMode = InsertionMode.Replace,
        UpdateTargetId = "searchResults"
    }))
{
    <input type="text" name="q" data-autocomplete="@Url.Action("SearchProviders", "MyController")" />
    <input type="submit" value="Search" />
}

<div id="searchResults" />

Действие контроллера:

public PartialViewResult Search(string q)
        {
            var jobs = MyRepository.GetJobsByQuery(String.Format("DataProvider='{0}'", q));
            return PartialView("_MyPartialRowset", jobs);
        }

1 Ответ

1 голос
/ 22 июня 2011

Я бы посоветовал отправить форму поиска с использованием HTTP GET; параметры / термины поиска могут быть включены в строку запроса на странице результатов поиска, например:

/ Поиск? Д = Ктулху

Затем сделайте все ваши ссылки редактирования так, чтобы они имели returnUrl в строке запроса:

/ Вещи / 235 / Edit? ReturnUrl =% 2FSearch% 3Fq% 3Dcthulhu

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

В рамках этого я бы также сделал страницу результатов поиска не кэшированной.

Обновление:

Если ваш поиск выполняется через AJAX, то самый простой способ сохранить параметры поиска для автоматического заполнения при возвращении пользователя - это поместить параметры поиска в файл cookie.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...