c# - 保存搜索状态

标签 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" />

Controller Action :

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

最佳答案

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

/Search?q=cthulhu

然后,创建所有编辑链接,以便它们在查询字符串中具有 returnUrl:

/Things/235/Edit?returnUrl=%2FSearch%3Fq%3Dcthulhu

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

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

更新:

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

关于c# - 保存搜索状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6432941/

相关文章:

asp.net - TextWriter 引用的行为不符合预期

c# - 如何在基于事件的设计中使用 Azure Batch 并终止/清理已完成的作业

PHP 尖峰 cpu 使用率

asp.net - 在 asp.net 网页中尝试 WebSecurity.CreateAccount 时遇到错误 'The Provider encountered an unknown error'

javascript - Android Web-View : Inject local Javascript file to Remote Webpage

caching - Post/Redirect/Get 上的整页重新加载忽略缓存控制

javascript - 正在调用 Razor 功能的 MVC 4 按钮 onClick

c# - 如何在没有 URL 的情况下加载 html 源?

c# - 如何对具有相同成员的不同类型参数使用相同的函数?

c# - 我可以调用执行相似功能的不同类(具有不同的方法和类型)吗?