我有一个构建搜索结果表的网页。然后用户可以编辑这些项目。当用户返回到页面时,它返回到它的未搜索状态(按照设计)。
我想让他们返回查询。如何保存该页面状态?
@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/