1

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

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

但是现在我想回到我在“安大略省”中的 10 个联系人记录列表,我怎么做才能不丢失排序列表?我不想重新开始我的搜索,我想回去找到“安大略”表格的 10 条记录。

有什么建议么?

4

2 回答 2

1

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

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

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

于 2012-06-28T16:04:13.640 回答
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
}
于 2012-06-28T16:05:18.960 回答