繁体   English   中英

返回上一页时如何保留搜索过滤器?

[英]How can I keep my search filters when I go back to a previous web page?

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

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

但是,现在我想回到“安大略省”的10个联系人记录列表,如何做到不松散已排序的列表? 我不想再次开始搜索,我想回去找到“安大略”的10条记录。

有什么建议么?

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

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

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

如果要导航到其他信息页面,并且想要返回上一页并查看所具有的搜索条件,则应将其存储在临时存储中。 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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM