适用场景


  先说一下伪URL分页的适用场景。在网站的网页里实现查询功能,如果查询条件比较少的话,还比较好办,把查询条件放到URL里面传递即可。但是如果查询条件过多,就会照成URL的长度过长。既不好看,编写起来也很麻烦。如果查询条件是汉字的话,还有一个编码的问题。

 

Postback分页

 

  再看看现有的几种分页方式。Postback分页方式可以利用ViewState来很方便的保存查询条件,但是由于采用表单提交的方式实现,搜索引擎不能识别。这个对于网站来说,是一个很难接受的。

 

URL分页


  这个是通过URL里的参数来分页,搜索引擎可以识别,而且还能使用URL重写的方式。但是要保留查询条件就比较麻烦了,一般是通过把查询条件放到URL里面来传递,但是编写起来比较复杂。当然还有其他的方法来实现。

 

可能的方法

 

  您可能会说,对于一般的不用查询的分页显示数据的需求,可以URL分页来实现。而对于需要查询的需求,我们在换成Postback的分页方式。

 

  这个是可以的,但是也不太方便。

 

  那么能不能方便的把Postback分页和URL分页的优点结合起来呢?自然框架里的QuickPager分页控件新增了一种“伪URL分页”的方式(不知道有没有其他人也是实现了类似的方法)。这种新的方式结合了Postback分页和URL分页的优点。

 

伪URL分页

 

  看起来像URL分页,当鼠标放在“下一页”(其他也类似)上面,会显示xxx.aspx?page=3这类的信息。但是实际上他是Postback的分页。

 

伪URL分页的连接方式:

 

<a  href="PsotURL.aspx?page=7" onclick="javascript:__doPostBack('Pager1',7);return false;">下一页</a>

 

 

Postback的连接方式:

<a  href="javascript:__doPostBack('Pager1',2)">下一页</a>

 


 

 

  对比看一下就可以发现原理。其实也很简单,postback是在href里面调用js函数,而伪URL改成了在onclick里面调用js函数,这样herf就可以“节省”出来,我们“伪装”一下,加上页号的参数即可。然后在onclick里面写上return false,“禁用”herf。

 

  您可能会问了,如果直接在地址栏里面输入“PsotURL.aspx?page=7”会如何?当然是显示第7页的数据了(前提是有第七页)。如果做不到这一点的话,也就无法“欺骗”搜索引擎了。

 

  另外伪URL分页还可以保留URL里面的参数,比如需要按照商品分类显示数据,URL里要有kind=3这样的参数,那么可以直接加在URL里面,连接里会自动加上kind=3的。

 

思维扩展

  这种方式也可以变成伪URL分页ajax版。就是说实质上用的ajax分页,但是为了照顾搜索引擎,可以加上一个连接给搜索引擎看。至于URL重写,可不可以,我还没有考虑好。

 

  在线演示:http://demo.naturefw.com/Nonline/QuickPager/default.aspx

 

    源代码和演示的代码 下载地址:http://www.naturefw.com/nature/down.aspx


 

作者: 金色海洋(jyk) 发表于 2011-01-13 15:59 原文链接

推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架