我有一个联系人列表,并且有几个下拉框可以在“供应商”和“客户”之间过滤我的联系人列表。
如果我选择任何“供应商”、“联系人”并对位于“安大略省”中的那些进行排序,我有一个 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
}