2011-06-21 40 views
2

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

我想让它们返回查询。我怎样才能保存页面状态?

@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

我建议让您的搜索表单提交使用HTTP GET;搜索参数/条件可以包括在搜索结果页面的查询字符串,是这样的:

/搜Q =邪神

然后,让所有的编辑链接,使他们在查询字符串returnUrl

/物联网/ 235 /编辑RETURNURL =%2FSearch%3Fq%3Dcthulhu

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

作为这个的一部分,我也会让搜索结果页面不被缓存。

更新:

如果您的搜索是通过AJAX做了,那么你来当用户回来保存搜索参数自动填充的最简单的方法是将搜索参数在Cookie中。

+0

我的表单通过GET提交ajax请求。我不希望它静态转到搜索页面。 –

+0

让我澄清一下,页面上的搜索功能是ajax。你如何在页面上存储ajax状态 –