保存搜索状态

时间:2011-06-21 22:51:14

标签: c# caching razor

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

我希望让他们返回查询。我该如何保存该页面状态?

@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 个答案:

答案 0 :(得分:1)

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

  

/搜索Q =邪神

然后,制作所有编辑链接,使其在查询字符串中显示returnUrl

  

/观光/ 235 /编辑?RETURNURL =%2FSearch%3Fq%3Dcthulhu

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

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

<强>更新

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