8 其他
8.1 QueryString
除了Cookie、Session、Application、Cache、HiddenField、ViewState、ControlState、Profile等重要状态机制外,ASP.NET还提供了一些其他的方法让我们暂时保存数据。
在很多时候我们希望跨页面传输数据,最常用的一个办法就是使用GET方式提交数据。也就是在URL中附加一段QUERYSTRING(类似 news.aspx?ID=1这样的效果),因此,有的时候我们不需要通过程序就能传输QUERYSTRING。不过,我们需要注意以下几点。
· IE浏览器对URL长度限制在2083个字符内。由于QUERYSTRING是在URL中传输内容,所以也就受到了这个限制。
· 在URL中传输的数据都是明文的,而且客户端随时能修改,因此千万别使用QUERYSTRING传敏感数据。
· 在URL中传汉字或者一些特殊字符需要进行URL编码后传递,接收的时候再反编码,否则传递的数据可能会出现乱码或者被截断。
string s = "编程快乐!@#$%^&*()";
Response.Redirect(Request.Url.AbsolutePath+"?data="+HttpUtility.UrlEncode(s));
接收的时候:
if (Request.QueryString["data"] != null)
Response.Write(HttpUtility.UrlDecode(Request.QueryString["data"]));
8.2 跨页提交
QUERYSTRING毕竟只能传输字符串,如果我们希望在一个页面中直接访问另外一个页面,可以使用ASP.NET 2.0的跨页提交功能。比如我们建立一个CrossPageSubmitTest.aspx页面,在任意页面建立一个按钮提交到CrossPageSubmitTest.aspx。
<asp:Button ID="btn_CrossPageSubmit" runat="server" OnClick="btn_CrossPageSubmit_
Click" PostBackUrl="CrossPageSubmitTest.aspx" Text="跨页面提交" />
然后在CrossPageSubmitTest.aspx的Page_Load中加入以下代码就能输出前一个页面上btn_CrossPageSubmit按钮的Text属性。
Response.Write((PreviousPage.FindControl("btn_CrossPageSubmit") as Button).Text);