ASP.NET中的网页间传值
一、举例
在淘宝上,输入正确的用户名、密码后就可以登录到个人账号的网页中,例如用户名旺旺。用户旺旺无论是搜索商品、查看商品、查看个人信息,都会打开很多网页。这时候,用户旺旺进行的所有的操作都是基于自己的账号。换句话说,无论用户旺旺打开多少淘宝的网页,只要账号没有退出,就是在自己的账号下进行的操作。
在这种情况下,就涉及到网页之间的传值,即用户旺旺打开的网页都是被标记为“旺旺”的网页。
二、ASP.NET中常用的网页间传值的技术
技术一:Request . QueryString [ “ ” ]方式
技术二:Session对象
规律:无论使用哪种方法,传值一定是分成两步:第一步,在第一个网页中赋值;第二步,在第二个网页中接收传递过来的值。
三、Request . QueryString [ “ ” ]方式
使用这个方式传值,是通过网址实现的。
举例:第一步:在第一个页面First . aspx中赋值
Response.Redirect("Second.aspx?id=100");
解释:
Response.Redirect()方法是链接到另一个网页
second.aspx指的是目标网页
?说明有网页之间的传值
id=100说明实际要传递的值是100,通过名字id来指代(id这个名字是可以根据实际情况来命名的)。
如果要传递的信息是用户名旺旺,可以写成
Response.Redirect("second.aspx?name=旺旺");
注意:旺旺不用使用单引号引起来。
第二步:在第二个页面Second.aspx中接收传递的值
情况一:string str = Request.QueryString["id"];//即str=”100”
或者string str = Request.QueryString["name"];//即str=”旺旺”
这样,从First.aspx网页传递过来的值就在Second.aspx页面中被string类型的变量str接收了。
情况二:接收的值直接运用于SQL语句中。
规律:一般网页之间的传值都是运用于SQL语句,所以要掌握这种方法。
(1)string strSQL = "select * from news where id =" +Request. QueryString ["id"];
实际得到的SQL语句是:select * from news where id =100;//前提:字段id是整型
(2)string strSQL = "select * from news where name =’" +Request. QueryString ["name"] + "’";
实际得到的SQL语句是:select * from news where name =’旺旺’ //前提:字段name是字符型
四、Session对象
使用Session对象相当于在整个站点内定义了一个“全局变量”,可以在所以网页中传递值。
注意:使用了Session对象的网页运行时是有先后顺序的。一定是“声明”Session对象的网页先运行。
举例:
第一步:在First.aspx网页中声明Session对象
protected void Page_Load(object sender, EventArgs e)
{
Session["Name"] = "";
//相当于声明一个“全局变量”,这个“全局变量”可以在网页之间传值
}
protected void Button1_Click(object sender, EventArgs e)
{
Session["Name"] = “旺旺”; //为Session对象Name赋值
Response.Redirect("Second.aspx");//链接到另一个网页
}
第二步:在Second.aspx网页中使用Session对象
protected void Page_Load(object sender, EventArgs e)
{
if(Session["Name"] == "旺旺")
{
Label1.Text="用户 旺旺:上午好!";
}
else
{
Response.Redirect("First.aspx");//如果验证Session对象Name的值不是“旺旺”,那么网页直接跳转到First.aspx中,从而实现网页信息的保护
}
}
注意:在使用Session对象时,运行网页一定要先从First.aspx页面开始运行。如果从Second.aspx开始运行,由于Session对象Name没有声明,也没有赋值,会出现错误的。