开篇概述
对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点。其实,对大部分高手来说,未必不是难点。
回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有3-5年经验的,有5-10年经验的,对于所有的面试者,我几乎问了同一道题:”请说说你所知道的页面之间传值的几种形式和方法,
并阐述他们的原理和过程”,关于这道题,从大家的回答来看,结果并不是很理想,从种类上来说,大部分人回答5种左右,极少部分能回答8种,没有超过8种的,但从深度上来说,很少有人能透彻的分析每种方法
的原理和过程,(当然,要想透彻的分析这些原理和过程,需要研究底层的东西,如page 生命周期和page原理,反射,IIS如何解析请求等,CLR,GC,反编译等)。鉴于此,我今天花些时间来总结一下,方面
大家学习,共同进步!!
明:本次博客只从广度上分析,不从深度上分析,若广大读者对深度上感兴趣,并且有一定的需求,那么,我专门写一篇深度上分析的文章,与大家分享,共同学习,共同进步。
大致概括一下,ASP.NET 页面之间传递值得方式大致可以分为如下几种:Request.QueryString[“name”],Request.Form(“name”),Session,Cookie,Cache,Application,Server.Transfer,Database,
HttpContext的Item属性,Files,DataBase等等。
详解每种方法
一、Request.QueryString
核心代码:
protected void getQueryString_Click(object sender, EventArgs e)
{
string QueStr = Request.QueryString[“name”];
Response.Write(QueStr);
}
总结:
1、Request.QueryString:获取http查询字符串变量集合。有两重载,即Request.QueryString[string name]和Request.QueryString[int index];
2、Request.QueryString主要是获取url中的“?”之后的参数,如url:a.aspx?name=”queryString”,则Request.QueryString[“name”]的值为“queryString”。
二、Request.Form
核心代码:
protected void getQueryString_Click(object sender, EventArgs e)
{
string strQueForm = Request.Form[“TextBox1”];
Response.Write(strQueForm);
}
总结:
1、Request.Form 获取窗体变量集合。有两重载,即Request.Form[string name]和Requst.Form[int index]。
2、获取表单指定名字的参数值。
三、Session
1、Session基本操作
a、创建Session
复制代码
//创建Session
public void createSession(string[] arrStr)
{
//创建数组
string[] str=new string[arrStr.Length];
for (int i = 0; i < arrStr.Length; i++)
{
str[i] = i.ToString();
Session[str[i]] = arrStr[i];
}
}
复制代码
b、获取Session的值
string getSessionValue=Session[“name”].ToString();
c、遍历Session
复制代码
//遍历Session
public void getSession()
{
IEnumerator sessionEnum = Session.Keys.GetEnumerator();
while (sessionEnum.MoveNext())
{
Response.Write(Session[sessionEnum.Current.ToString()].ToString()+”;”);
}
}
复制代码
d、清空Session,但不结束会话
//清空Session,但不结束会话
public void clearSession()
{
Session.Clear();
}
e、结束Session会话
//结束Session会话
public void abandonSession()
{
Session.Abandon();
}
2、Session数据存放形式和位置
复制代码