ASP.NET 分页中的搜索条件以什么形式存储最好,cookies太麻烦

ASP.NET 分页中的搜索条件以什么方式存储最好,cookies太麻烦
ASP.NET 分页中的搜索条件以什么方式存储最好,cookies太麻烦,老是刷新不即时,要刷两次才出正确的结果

因为一般列表页,都有很多种搜索方式,常见的三种。
1.比如地址栏过来的搜索条件也就是url方式,
2.也有按钮提交的搜索也就是post方式,
3.还有DropDownList跳转后的方式

我用cookies存储的时候在每种搜索方式都要进行相应的处理,进行再次刷新才能出正确的结果,不然都得刷新两次,或搜索两次才能出正常的结果!

请高手指点下,给个最好的方式,最好能详细点!
------解决方案--------------------
引用:
session太容易超时了,受服务器的影响,地址栏肯定不行,不安全,上面那么多参数也不好看!而且翻页的时候那样参数还得传进去


我觉得还是得看实际情况吧!
1. 放地址栏里面是最方便的,虽然放上去不好看,安全方面,可以写程序的过程中来弥补,比如说,在查询前做一些校验,过滤掉一些非法的参数。
2. 放到session里面比较省心,不过前提是没有在iis里面做负载均衡,如果涉及到多台web服务器,而你的session是放在服务器内存里面,状态容易丢失;如果只是单台的web服务器,放session里面也是比较方便的。
3. cookie的话,放得最长久,哪怕你关闭了浏览器,刷新不及时的问题应该是你操作cookie有误所导致,操作cookie要注意几个方面:
    1). cookie是通过domain和path来控制作用范围的,尤其是后面那个属性,js中经常操作cookie失效,主要是由于没有设置path的原因
    2). 如果你通过asp.net后台的response来设置cookie,那么,要注意response只有返回到客户端,才能影响cookie的值,如果是ajax的方式,可能你在服务端已经设置了cookie,但是它这个响应没有返回客户端,导致客户端的cookie并没有被修改。
4. 如果在webform下,用viewstate是个不错的选择
5. 如果使用asp.net mvc,用ViewData来缓存查询条件吧
------解决方案--------------------
地址栏最实际吧
------解决方案--------------------
一般情况下都是直接url传值
------解决方案--------------------
URL 传参
------解决方案--------------------
引用:
不光要点搜索两次,我发现viewstate不能保持状态啊,翻了一页之后,这个viewstate就不存在了

你的分页用url传的肯定是翻页之后viewstate不在了。
------解决方案--------------------
引用:
引用:

session太容易超时了,受服务器的影响,地址栏肯定不行,不安全,上面那么多参数也不好看!而且翻页的时候那样参数还得传进去


我觉得还是得看实际情况吧!
1. 放地址栏里面是最方便的,虽然放上去不好看,安全方面,可以写程序的过程中来弥补,比如说,在查询前做一些校验,过滤掉一些非法的参数。
2. 放到session里面比较省心,不过前提是没有……

回答的很详细了
------解决方案--------------------
ViewState关掉了?
------解决方案--------------------
页面刷新的用 url储存
局部刷新的用 隐藏域储存
------解决方案--------------------

 count = pg.GetCount();
       if (!IsPostBack)
       {
           int pagecount = 10;
           int pageindex = 1;
           Repeater1.DataSource = pg.SelectAllDataset(pageindex, pagecount);
           Repeater1.DataBind();
           ViewState["pageindex"] = 1;
           ViewState["paixu"] = "";
           if (count / 10 == 0)
           {
               pageco = count / 10;
           }
           else
           {
               pageco = (count / 10) + 1;
           }
           ViewState["pageco"] = pageco;
       }


我用viewState分页表示毫无压力,。
------解决方案--------------------
通过URL传递参数吧,配合使用AspNetPager,我一直这么做的。
比如一个列表查询页面:

1、进入页面后首先根据Url参数构造查询条件,同时设置页面上查询项目的值,

2、根据查询条件,查询数据,

3、分页处理,使用AspNetPager,可以自动生成分页列表,并且参数都被自动保存下来,分页的时候也不会出问题,

4、点击查询的时候,将各个查询参数绑定到Url上重新加载这个页面。

这样没有使用ViewState,没有Session,没有cookie,搜索引擎也比较容易收录吧

------解决方案--------------------
引用:
我把ViewState换成session,其它代码全不变,翻到第2页就是正确的结果,但是ViewState就不行,输出ViewState的值发现是空,难道ViewState不能像session和cookies那样保持状态,我并没有对他进行赌空值处理,怎么就把值给丢了呢


ViewState保存在当前页面中,Seesion保存在服务器,Cookie保存在浏览器,ViewState进入一个新的页面,当然就没了。