状态存储管理 encode,decode,transfer
ASP.NET状态存储管理九大兵器之二(查询字苻串)
查询字苻串是追加在URL后的数据(也是我常用的)
例如:
http://www.cnblogs.com/aierong/admin/EditPosts.aspx?opt=abc
这里?后的opt=1就是查询字符串
当我们在一页面向另一页面传递数据时可以用此方法。
使用如下方法接到数据:
string str=Request.QueryString[“opt“]
这样str就等于“abc“
这里我们传递的是英文字符,要是传递中文字符,我们得进行编码和解吗:
傳送時用Server.UrlEncode方法編碼,接收時用Server.UrlDecode解碼.
例如:
传递:
string url=“http://www.cnblogs.com/aierong/admin/EditPosts.aspx?opt=“+Server.UrlEncode(“我们“);
Response.Redirect(url);
接收:
string str=Server.UrlDecode(Request.QueryString[“opt“]);
这样str就等于“我们“
当然我们还有一省事的方法:
在web.config中修改globalization节为
<globalization
requestEncoding="gb2312"
responseEncoding="gb2312"
/>
ASP.NET状态存储管理九大兵器之三(隐藏的窗体字段)
利用隐藏的窗体字段在客户机和服务器间传递数据也是可行的
例如:
<input type="hidden" name="aa" value="abc">
string str=Request.Form["aa"];
str就等于“abc“
总结,最好不要放安全性高的数据,例如不要传递密码,银行卡号码等数据
ASP.NET状态存储管理九大兵器之四(暂存状态)
ASP.NET提供一个类System.Web.HttpContext ,用来表示上下文,此对象有一个属性Items
暂存状态就是利用HttpContext.Items属性来存放数据
MSDN中HttpContext.Items属性的解释是这样的:获取可用于在 HTTP 请求过程中在 IHttpModule 和 IHttpHandler 之间组织和共享数据的键值
HttpContext.Items属性中可以存放任何类型数据,无论这个属性中存放什么数据,都会在请求处理结束后自动清除,这就是暂存状态,数据的存放时间非常短.
//例如:
//我们有一页面A.ASPX,有一按钮ID:Submit,点按钮把页面转向b.aspx页面
public void Submit_Click(Object sender, EventArgs E)
{
SqlConnection myConnection = new SqlConnection("server=(local)NetSDK;database=pubs;Trusted_Connection=yes");
SqlDataAdapter myCommand = new SqlDataAdapter("select * from Authors", myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds, "Authors");
//把数据放入暂存中
Context.Items["MyData"] =ds;
Server.Transfer(b.aspx);
}
//b.aspx页面中
public void Page_Load(Object sender, EventArgs E)
{
if (!IsPostBack)
{
//取得暂存数据
DataSet ds=(DataSet)Context.Items["MyData"];
//其它数据过程
查询字苻串是追加在URL后的数据(也是我常用的)
例如:
http://www.cnblogs.com/aierong/admin/EditPosts.aspx?opt=abc
这里?后的opt=1就是查询字符串
当我们在一页面向另一页面传递数据时可以用此方法。
使用如下方法接到数据:
string str=Request.QueryString[“opt“]
这样str就等于“abc“
这里我们传递的是英文字符,要是传递中文字符,我们得进行编码和解吗:
傳送時用Server.UrlEncode方法編碼,接收時用Server.UrlDecode解碼.
例如:
传递:
string url=“http://www.cnblogs.com/aierong/admin/EditPosts.aspx?opt=“+Server.UrlEncode(“我们“);
Response.Redirect(url);
接收:
string str=Server.UrlDecode(Request.QueryString[“opt“]);
这样str就等于“我们“
当然我们还有一省事的方法:
在web.config中修改globalization节为
<globalization
requestEncoding="gb2312"
responseEncoding="gb2312"
/>
ASP.NET状态存储管理九大兵器之三(隐藏的窗体字段)
利用隐藏的窗体字段在客户机和服务器间传递数据也是可行的
例如:
<input type="hidden" name="aa" value="abc">
string str=Request.Form["aa"];
str就等于“abc“
总结,最好不要放安全性高的数据,例如不要传递密码,银行卡号码等数据
ASP.NET状态存储管理九大兵器之四(暂存状态)
ASP.NET提供一个类System.Web.HttpContext ,用来表示上下文,此对象有一个属性Items
暂存状态就是利用HttpContext.Items属性来存放数据
MSDN中HttpContext.Items属性的解释是这样的:获取可用于在 HTTP 请求过程中在 IHttpModule 和 IHttpHandler 之间组织和共享数据的键值
HttpContext.Items属性中可以存放任何类型数据,无论这个属性中存放什么数据,都会在请求处理结束后自动清除,这就是暂存状态,数据的存放时间非常短.
//例如:
//我们有一页面A.ASPX,有一按钮ID:Submit,点按钮把页面转向b.aspx页面
public void Submit_Click(Object sender, EventArgs E)
{
SqlConnection myConnection = new SqlConnection("server=(local)NetSDK;database=pubs;Trusted_Connection=yes");
SqlDataAdapter myCommand = new SqlDataAdapter("select * from Authors", myConnection);
DataSet ds = new DataSet();
myCommand.Fill(ds, "Authors");
//把数据放入暂存中
Context.Items["MyData"] =ds;
Server.Transfer(b.aspx);
}
//b.aspx页面中
public void Page_Load(Object sender, EventArgs E)
{
if (!IsPostBack)
{
//取得暂存数据
DataSet ds=(DataSet)Context.Items["MyData"];
//其它数据过程
keim,毕业于安徽科技学院理学院,2003年开始对Web开发有浓厚的兴趣,并专注于C#/java Web开发,软件架构设计、分布式相关、项目管理、前端设计等等,实战派...