在项目中遇到,点击按钮,跳转页面。Server.Transfer()
protected void btnSave_Click(object sender, EventArgs e) { Session["area"] = dr_Dept.SelectedItem.Text; Session["starttime"] = t_starttime.Text; Session["stoptime"] = t_endtime.Text; string id = Request["id"].ToString(); string url = ""; if (id == "111") url += "../../ReportPrint/PrintList.aspx?TypeId=19911"; else if (id == "112") url += "../../ReportPrint/PrintList.aspx?TypeId=19912"; else if (id == "113") url += "../../ReportPrint/PrintList.aspx?TypeId=19913"; else if (id == "114") url += "../../ReportPrint/PrintList.aspx?TypeId=19914"; else url += "../../ReportPrint/PrintList.aspx?TypeId=19915"; if (Check()) { Server.Transfer(url); } } public bool Check() { if (string.IsNullOrEmpty(t_starttime.Text) || string.IsNullOrEmpty(t_endtime.Text)) { Response.Write("<script>alert('请选择时间段!')</script>"); return false; } if (string.IsNullOrEmpty(dr_Dept.SelectedItem.Text)) { Response.Write("<script>alert('请选择地区!')</script>"); return false; } if (!string.IsNullOrEmpty(t_starttime.Text) && !string.IsNullOrEmpty(t_endtime.Text)) { string t1 = Convert.ToDateTime(t_starttime.Text).ToString("yyyy-MM-dd"); string t2 = Convert.ToDateTime(t_endtime.Text).ToString("yyyy-MM-dd") + " 23:59:59"; if (EConvert.ToDateTime(t2).CompareTo(EConvert.ToDateTime(t1)) < 0) { Response.Write("<script>alert('结束时间应该比开始时间大!')</script>"); return false; } } return true; }
以前用的最多的就是Response.Redirect()方法
1. 过程:发送一个Http响应到客户端,通知客户端跳转到一个新的页面,然后客户端再发送跳转请求到服务器端。
2. 页面跳转之后内部控件保存的所有信息丢失,当A跳转到B,B页面将不能访问A页面提交的数据信息。
3. 使用这个方法使用这个方法跳转后浏览器地址栏的Url信息改变
4. 可以使用Session Cookies Application等对象进行页面间的数据传递
5. 重定向操作发生在客户端,总共涉及到两次与Web服务器的通信:一次是对原始页面的请求,另一次是重定向新页面的请求
在上述的代码中,所用到的Server.Transfer()方法
1. 实现页面跳转的同时将页面的控制权进行移交
2. 页面跳转过程中Request Session等保存的信息不变,跳转之后可以使用上一个页面提交的数据
3. 跳转之后浏览器地址栏的Url不变
4. 这种方法的重定向请求是在服务器端的进行的,浏览器不知道页面已经发生了一次跳转