请教页面跳转问题

时间:2022-12-22 10:16:56
A页面提交表单 之后  到B页面查看结果

查看结果之前 先判断是否已经登录

如果未登录,则跳转到C页面登录,登录成功之后返回到B页面

我现在B页面时在Page_Load事件中判断 并跳转的


但是Request.UrlReferrer方法并认可我这点,它的返回值总是A页面。



之后 : 我测试了两个页面的跳转 testA 和 testB  如果跳转页面是最上级的话  Request.UrlReferrer返回值为NULL


请教下我该如何处理好这个问题?

23 个解决方案

#1


用Response.Redirect("testA.aspx");方法

#2


判断是否登录完之后用这个跳转
Response.Redirect("B.aspx");

#3


直接跳转不就完了啊
Response.Redirect("c.aspx");

#4


难道是因为我没描述清楚?

#5


可以用表单验证啊
在web.config里面配置

如果没有登录,定位到登录页面
FormsAuthentication.RedirectToLogin();
登录成功,定位到所需页面
FormsAuthentication.RedirectFromLogin(txtUserName.Text,true);

#6


如果是要实现aN页面,都要判断登陆,由c到bN定是要加参数判断来源和去处的

#7


引用 5 楼 littleqiang520 的回复:
可以用表单验证啊
在web.config里面配置

如果没有登录,定位到登录页面
FormsAuthentication.RedirectToLogin();
登录成功,定位到所需页面
FormsAuthentication.RedirectFromLogin(txtUserName.Text,true);
这个貌似是一开始就要登陆,不然进行不了任何操作哦

#8


如果未登录,则跳转到C页面登录
----------------------------

这里你应该告知c页面,登录成功后 是否有指定的页要返回

如果有 返回指定页,没有返回默认页

#9


难道你们都没看到 Request.UrlReferrer 这个方法吗?


算了 我自己想办法吧,可能是我问题没描述清楚

谢谢大家了

#10


Form
A.aspx:
public string id(get{return TextBox1.Text;})//定义公共属性
Server.Transfer("B.aspx");//重定向到目标页面
B.aspx:
//HTML中引入PreviousPageType 指令
virtualPath=A.aspx
<%@PreviousPageType virtualPath=A.aspx %>
//代码中获取From数据
string abcd=PreviousPage.id;

您还可以使用context对象 。于Form的方法类似,这个方法也能保持大量的数据,缺点也一样。但是用的方法比较简单
A.aspx
Context.Items["id"]="1";赋值
Server.Transfer("b.aspx");
B.aspx
string id=Context.Items["Id"].ToString();
Context.Items.Remove();//过河拆桥

ViewState Appllcation Session 静态变量 缓存Cache Cookie QueryString 都可以玩

#11


那些登录未登录判断下就可以了

#12


引用 5 楼 littleqiang520 的回复:
可以用表单验证啊
在web.config里面配置

如果没有登录,定位到登录页面
FormsAuthentication.RedirectToLogin();
登录成功,定位到所需页面
FormsAuthentication.RedirectFromLogin(txtUserName.Text,true);



我也是这么想的,不行吗?

还是你脑子转不过弯了。

#13


有分就有动力

#14


引用楼主 luqc1985 的回复:
A页面提交表单 之后 到B页面查看结果

查看结果之前 先判断是否已经登录

如果未登录,则跳转到C页面登录,登录成功之后返回到B页面

我现在B页面时在Page_Load事件中判断 并跳转的

A是一个数据提交页面,B是一个结果查看页面,C是登陆页面。
可以在未登陆时提交数据,但是提交后如果查看结果需要已登陆。
我理解的对不?

不解:如果我没有提交数据,登陆后能到B页面么?如果能,B会显示以前提交的结果么?

#15


來看哈····

#16


 

Page_load(object obj,EventArgs e)
             {
                     if(!IsPostBack)
                    {
                         if(Request.UrlReferrer!=null)  
                        {
                             ViewState["UrlReferrer"]=Request.UrlReferrer.ToString();
                        }
                    }
             }

使用前需要进行判断:

      if (Request != null && Request.UrlReferrer != null && Request.UrlReferrer.PathAndQuery != null)
      {
            string previousURL = Request.UrlReferrer.PathAndQuery;
      }



在使用Request.UrlReferrer时还要注意: 
1.  如果上一页面使用document.location方法导航到当前页面,Request.UrlReferrer返回空值
2.  如果有A,B两个页面,在浏览器中直接请求A页面,在A页面的中Page_Load事件中导航到B 页面,则    Request.UrlReferrer返回空。因

为 在Page_load事件中页面还未初始化,所以无法记录当前页的信息,导航到b页面也就无法获得上一页面的信息   
3.  点击刷新按钮不会改变Request.UrlReferrer 


#17


跳什么页面直接Response.Redirect("*.aspx");

#18


引用楼主 luqc1985 的回复:
 我测试了两个页面的跳转 testA 和 testB 如果跳转页面是最上级的话 Request.UrlReferrer返回值为NULL


请教下我该如何处理好这个问题?

判断下
 if(Request.UrlReferrer!=null)  


看看这个:
http://www.cnblogs.com/freeskycd/archive/2010/03/03/1677750.html

#19


引用 5 楼 littleqiang520 的回复:
可以用表单验证啊
在web.config里面配置

如果没有登录,定位到登录页面
FormsAuthentication.RedirectToLogin();
登录成功,定位到所需页面
FormsAuthentication.RedirectFromLogin(txtUserName.Text,true);

这个方案在.net应用Microsoft安全认证时比较有用

#20


用 Session  判断 

#21


楼主,你的思路是没有问题的。
但是在表单提交的时候=》查看数据=》这里检查是否登录会刷新一次页面=》
你可以使用cookie保存你上一次的登录。

或者在url上传递上一次打开的url 比如 http://www.www.com?return=asp.net.aspx

csdn上估计也是使用cookie的。登录后返回上一次登录界面。

#22


用session保存你登录名
只可检查session是否为空
空  Response.Redirect("c.aspx");
不为空 Response.Redirect("b.aspx");




http://www.csharp360.com/bbs

#23


哎,可能是没说清楚我的意思,浪费大家时间了 呵呵。。杯具。。

感谢大家

#1


用Response.Redirect("testA.aspx");方法

#2


判断是否登录完之后用这个跳转
Response.Redirect("B.aspx");

#3


直接跳转不就完了啊
Response.Redirect("c.aspx");

#4


难道是因为我没描述清楚?

#5


可以用表单验证啊
在web.config里面配置

如果没有登录,定位到登录页面
FormsAuthentication.RedirectToLogin();
登录成功,定位到所需页面
FormsAuthentication.RedirectFromLogin(txtUserName.Text,true);

#6


如果是要实现aN页面,都要判断登陆,由c到bN定是要加参数判断来源和去处的

#7


引用 5 楼 littleqiang520 的回复:
可以用表单验证啊
在web.config里面配置

如果没有登录,定位到登录页面
FormsAuthentication.RedirectToLogin();
登录成功,定位到所需页面
FormsAuthentication.RedirectFromLogin(txtUserName.Text,true);
这个貌似是一开始就要登陆,不然进行不了任何操作哦

#8


如果未登录,则跳转到C页面登录
----------------------------

这里你应该告知c页面,登录成功后 是否有指定的页要返回

如果有 返回指定页,没有返回默认页

#9


难道你们都没看到 Request.UrlReferrer 这个方法吗?


算了 我自己想办法吧,可能是我问题没描述清楚

谢谢大家了

#10


Form
A.aspx:
public string id(get{return TextBox1.Text;})//定义公共属性
Server.Transfer("B.aspx");//重定向到目标页面
B.aspx:
//HTML中引入PreviousPageType 指令
virtualPath=A.aspx
<%@PreviousPageType virtualPath=A.aspx %>
//代码中获取From数据
string abcd=PreviousPage.id;

您还可以使用context对象 。于Form的方法类似,这个方法也能保持大量的数据,缺点也一样。但是用的方法比较简单
A.aspx
Context.Items["id"]="1";赋值
Server.Transfer("b.aspx");
B.aspx
string id=Context.Items["Id"].ToString();
Context.Items.Remove();//过河拆桥

ViewState Appllcation Session 静态变量 缓存Cache Cookie QueryString 都可以玩

#11


那些登录未登录判断下就可以了

#12


引用 5 楼 littleqiang520 的回复:
可以用表单验证啊
在web.config里面配置

如果没有登录,定位到登录页面
FormsAuthentication.RedirectToLogin();
登录成功,定位到所需页面
FormsAuthentication.RedirectFromLogin(txtUserName.Text,true);



我也是这么想的,不行吗?

还是你脑子转不过弯了。

#13


有分就有动力

#14


引用楼主 luqc1985 的回复:
A页面提交表单 之后 到B页面查看结果

查看结果之前 先判断是否已经登录

如果未登录,则跳转到C页面登录,登录成功之后返回到B页面

我现在B页面时在Page_Load事件中判断 并跳转的

A是一个数据提交页面,B是一个结果查看页面,C是登陆页面。
可以在未登陆时提交数据,但是提交后如果查看结果需要已登陆。
我理解的对不?

不解:如果我没有提交数据,登陆后能到B页面么?如果能,B会显示以前提交的结果么?

#15


來看哈····

#16


 

Page_load(object obj,EventArgs e)
             {
                     if(!IsPostBack)
                    {
                         if(Request.UrlReferrer!=null)  
                        {
                             ViewState["UrlReferrer"]=Request.UrlReferrer.ToString();
                        }
                    }
             }

使用前需要进行判断:

      if (Request != null && Request.UrlReferrer != null && Request.UrlReferrer.PathAndQuery != null)
      {
            string previousURL = Request.UrlReferrer.PathAndQuery;
      }



在使用Request.UrlReferrer时还要注意: 
1.  如果上一页面使用document.location方法导航到当前页面,Request.UrlReferrer返回空值
2.  如果有A,B两个页面,在浏览器中直接请求A页面,在A页面的中Page_Load事件中导航到B 页面,则    Request.UrlReferrer返回空。因

为 在Page_load事件中页面还未初始化,所以无法记录当前页的信息,导航到b页面也就无法获得上一页面的信息   
3.  点击刷新按钮不会改变Request.UrlReferrer 


#17


跳什么页面直接Response.Redirect("*.aspx");

#18


引用楼主 luqc1985 的回复:
 我测试了两个页面的跳转 testA 和 testB 如果跳转页面是最上级的话 Request.UrlReferrer返回值为NULL


请教下我该如何处理好这个问题?

判断下
 if(Request.UrlReferrer!=null)  


看看这个:
http://www.cnblogs.com/freeskycd/archive/2010/03/03/1677750.html

#19


引用 5 楼 littleqiang520 的回复:
可以用表单验证啊
在web.config里面配置

如果没有登录,定位到登录页面
FormsAuthentication.RedirectToLogin();
登录成功,定位到所需页面
FormsAuthentication.RedirectFromLogin(txtUserName.Text,true);

这个方案在.net应用Microsoft安全认证时比较有用

#20


用 Session  判断 

#21


楼主,你的思路是没有问题的。
但是在表单提交的时候=》查看数据=》这里检查是否登录会刷新一次页面=》
你可以使用cookie保存你上一次的登录。

或者在url上传递上一次打开的url 比如 http://www.www.com?return=asp.net.aspx

csdn上估计也是使用cookie的。登录后返回上一次登录界面。

#22


用session保存你登录名
只可检查session是否为空
空  Response.Redirect("c.aspx");
不为空 Response.Redirect("b.aspx");




http://www.csharp360.com/bbs

#23


哎,可能是没说清楚我的意思,浪费大家时间了 呵呵。。杯具。。

感谢大家