用Response.Redirect( )方法进行页面传值

1. 页面传值

在Web应用程序运行时,ASP.NET将维护有关当前应用程序、每个用户会话、当前HTTP请求页等方面的信息。ASP.NET包含一系列类,用于封装这些上下文信息。在程序中可以使用这些类的实例对象作为代码访问的对象。下面通过几个典型实例介绍如何在ASP.NET应用程序中实现页面的传值。


实例说明

在开发网站时,经常会遇到在实现特定功能时,需要获取前一页关键信息的问题。在本实例中,为了在“显示页”中显示用户的登录名,需要把“登录页面”中的用户名,传递到“显示页”中。实现此功能的方法很多,可以利用Session对象进行页面传值,也可以通过Response对象中的Redirect方法在跳转页面时将信息传到指定页中。本实例通过Response对象的Redirect方法来传递用户的登录名,其运行结果如图11.1所示,当用户点击登录按钮时,将进入图11.2所示的页面。

 
图11.1  登录页面
 
图11.2  显示页面

技术要点

Redirect方法用于将客户端重定向到资源的新位置。语法格式如下:

 public void Redirect(string url)

url参数用于确定目标位置。

利用Response对象的Redirect方法实现页面传值的代码如下:

Response.Redirect("NavigatePage.aspx?UserName=" 
+ Login1.UserName.ToString ( ));

NavigatePage.aspx跳转到指定页面的地址。

UserName传递用户的登录名变量。

注意:

(1)UserName必须放在“?”之后,在“显示页”中必须利用Request[“UsrName”]来接收页面传值信息。

(2)利用Response.Redirect( )方法传值时,由于该方法会把传递的关键信息显示在地址栏中,其保密性比较差,因此使用时,需要对传递的重要信息进行加密。

实现过程

(1)新建一个网站,将其命名为Ex11_01,默认主页名为Default.aspx。

(2)在页面Default.aspx中添加1个登录控件Login,用来验证用户的登录信息。

(3)在该网站中添加1个NavigatePage.aspx页,并在该页中添加3个Label控件,分别用于显示登录用户名、问候语和“欢迎您登录明日网站”的信息。

(4)主要程序代码。

在Default.aspx页面中,当验证用户身份时,触发Login控件的Authenticate事件,在该事件下判断用户的登录名、密码是否与数据库中的用户名和密码相匹配,如果匹配,则跳转到显示页NavigatePage.aspx,并向该页传递用户的登录名。Login控件的Authenticate事件代码如下:

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
SqlConnection conn = GetConnection ( );
conn.Open( );
string sqlStr;
sqlStr = "select * from Tb_Login where UseName='" + 
Login1.UserName + "' and UsePassword='" + Login1.Password + "'";
SqlDataAdapter da = new SqlDataAdapter(sqlStr, conn);
DataSet ds = new DataSet( );
da.Fill(ds);
if (!(ds.Tables.Count < 0))
{
Response.Redirect("NavigatePage.aspx?UserName=" + 
Login1.UserName.ToString ( ));
}
else
Response.Write("登录失败");
da.Dispose( );
ds.Dispose( );
conn.Close( );
}
当从页面Default.aspx跳转到页面NavigatePage.aspx后,在页面NavigatePage.aspx的Page_Load事件中通过Request["UserName"]来读取从页面Default.aspx传来的信息并显示。NavigatePage.aspx页面的Page_Load事件代码如下:
protected void Page_Load(object sender, EventArgs e)
{
//获取用户登录名
Label1.Text =Request["UserName"];
//将系统时间与数据13进行比较,来获取问候语
int Time = DateTime.Now.Hour.CompareTo(13);
string str;
if(Time>0)
{
str="下午好!";
}
else if (Time < 0)
{
str = "上午好!";
}
else
{
str = "中午好!";
}
Label3.Text = str;
}

举一反三

根据本实例,读者可以:

在人事档案管理系统中,可利用页面传值在另一个页面上显示该员工的详细信息;

在开发办公自动化系统时,可利用页面传值将用户的Id传递到其他页面中。


原文来自:

http://www.51cto.com/art/200806/77030.htm

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页