在页面之间传递信息 ,有一个常用的方法就是在 URL中使用查询字符串。

例如:

  1. http://www.soso.com/q?unc=i400044&sc=web&bs=51cto&ch=w.uf&num=10&w=51cto.com 

查询字符串就是位于问号(?)后面的子字符串部分。

使用查询字符串的优势:它是不会增加服务器额外的负担。

但也有局限性:

1.所传递的信息只能是简单字符串,而且字符串必须是合法的URL字符串

2.浏览器对URL字符串的长度有限制。

3.所传递的数据对用户来说是看见的

4.用户可以对字符串进行修改,而程序不能进行保护。

虽然程序字符串有这么多局限性,但把数据防止查询字符串中传递还是一个有用的技术,此技术特别适合数据库有用程序。

我们要使用查询字符串。就必须使用一个特殊的Hyperlink控件。或者使用Response.Redirect()方法 。将页面导航到目标页面 。。

  1. //将页面导航到newPage.aspx,查询字符串参数为 myName-JFCao,address=jiujiang.多个参数使用"&"隔开。  
  2. Response.Redirect("newPage.aspx? myName=JFCao & address=jiujiang"); 

在目标页面使用传过来的参数也很简单:

  1. //从QueryString字典集合中获取的数据都是字符串类型,但可以根据需要转换为简单数据类型。  
  2. //试图方法一个查询字符串不存在的值时,将返回一个NULL值  
  3. string myName = Request.QueryString["myName"];  
  4. string address = Request.QueryString["address"]; 

 

URL编码:

使用查询字符串有个潜在问题 :查询字符串中的字符可能不是合法的URL字符。

但为了避免这种问题出现。就要使用到URL编码了。

要执行URL编码和解码,其实很简单,只要使用HttpServerUtility类中的 UrlEncode()方法和UrlDecode()方法

例如:

  1. //不要对整个URL字符串进行编码,其中参数分隔符"&"就不需要  
  2. //可以使用Server.UrlDecode()方法进行解码操作,但在查询字符串  
  3. //中不必对获取的查询字符串进行解码,ASP.NET将自动帮你进行解码操作  
  4. string url ="newPage.aspx?";  
  5. url+="Item="+Server.UrlEncode("需要编码的字符串")+"&";  
  6. url+="Mode="+Server.UrlEncode("需要编码的字符串");  
  7. Response.Redirect(url);