保存搜索状态

本文关键字:状态 搜索 保存 | 更新日期: 2023-09-27 17:59:45

我有一个网页,它构建了一个搜索结果表。用户然后可以编辑这些项目。当用户返回到页面时,它将返回到未搜索的状态(按照设计)。

我想让它们返回查询。如何保存该页面状态?

@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);
        }

保存搜索状态

我建议您使用HTTPGET提交搜索表单;搜索参数/术语可以包含在搜索结果页面的查询字符串中,如下所示:

/搜索?q=cthulhu

然后,制作所有编辑链接,以便在查询字符串中有一个returnUrl

/事情/235/编辑?returnUrl=%2搜索%3Fq%3cthulhu

保存或取消完成后,返回到returnUrl中指定的页面。这样,无论从哪里打开编辑,都可以使用相同的逻辑返回到上一页。

作为其中的一部分,我还将使搜索结果页面不被缓存。

更新:

如果您的搜索是通过AJAX完成的,那么保存搜索参数以在用户返回时自动填充的最简单方法是将搜索参数放在cookie中。