当我回到之前的网页时,如何保留我的搜索过滤器?

时间:2012-06-28 16:01:27

标签: c# asp.net

我有一个联系人列表,我有几个下拉框来过滤“供应商”和“客户”之间的联系人列表。

如果我选择任何一个,“供应商”,“联系人”并对那些位于“安大略省”的人进行排序,并且我有一个10个记录列表,我会勾选其中一个记录以显示他的所有信息。

但是现在我想回到我在“安大略省”的10个联系人记录列表中,我是如何做到这一点的,不要忽略排序列表?我不想重新开始我的搜索,我想回去找到“安大略省”的10条记录。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您可以将搜索参数放在网址中,例如

http://example.com/search?select=vendors&location=Ontario

另一种选择是将最后一次搜索存储在会话中(例如由Trac使用)或cookie(例如由Bugzilla使用)并在再次访问搜索页面时重新使用它。但是,这可以防止多次搜索。

答案 1 :(得分:0)

如果您要导航到不同的页面以获取信息,并且您想要返回上一页并查看您拥有的搜索条件,则应将其存储在某个临时存储中。 HTTP是无状态的。所以我们需要一些临时存储位置。

您可以考虑将搜索条件存储在Session变量/ cookies中。加载上一页时,检查您保存的最后一个搜索条件的会话/ cookie,并根据该值加载结果。

编辑:使用会话的简单示例。

public class SearchCriteria
{
  public string Type{ set;get;}
  public string Location { set;get;}
  //other properties based on your scenario
}

然后在重定向到新页面之前(信息页面)将值设置为会话

var search=new SearchCriteria();
search.Type="Vendors";  //hard coded for example. you may replace with your form values
search.Location="Ontario";
Session["SearchCriteria"]=search;
Response.Redirect("info.aspx?id=someId");

在此搜索页面的PageLoad事件中,检查会话

if(Session["SearchCriteria"]!=null)
{
    var search=(SearchCriteria) Session["SearchCriteria"];
    //Now load the search based on this search criteria.
    // check for search.Location/search.Type
}