有两个页面 a.aspx
b.aspxa页面上用JS写的 document.location.href="b.aspx";
跳转到b页面。但不想让用户直接在浏览器里打开 b.aspx 页面,一定要先从 a 页面跳转过来,该如何做?我的初步想法是在b页面检查 referrer,但是好像有的浏览器不支持referrer,是否还有其他什么方法呢?

解决方案 »

  1.   

    采用控件的PreviousPage属性
    或者使用PreviousPageType指令
    比如:
    b.aspx:<%@ PreviousPageType VirtualPath="a.aspx" %>b.aspx.cs:
      protected void Page_Load(object sender, EventArgs e)
        {
            if (PreviousPage != null && PreviousPage.IsCrossPagePostBack)
            {
                //your code
            }
            else
            {
                Response.Redirect("a.aspx");
            }    }
      

  2.   

    楼上的代码我测试了以下,如果 a页面里用js跳转到b页面的话,b页面里面的 PreviousPage好像永远是 null
      

  3.   

    a.aspx.cs:
      protected void Page_Load(object sender, EventArgs e)
        {
            Session["PAGENAME"] = "a";
        }
    b.aspx.cs:
       protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["PAGENAME"] != "a")
                Response.Redirect("a.aspx");    }这样可以吗?你试试
      

  4.   

    很多啊,随便传个字符,建立个会话,弄个cookie,在B页面弄个判断就行了。
      

  5.   

    简单一点的,
    requeset.RawUrl  获取当前请求的原始 URL。
    Url  获取有关当前请求的 URL 的信息。
      

  6.   

    传的时候传个标志位,如:Response.Redirect("a.aspx&page=a");
            在B里检测   string page=  response。qua忘了【page】;
                          if(page=="a")
                          {来自a;
                          }
                           else
                           {
                           }
      

  7.   

    js写入cookie一个标志,b页面判断cookie即可,这样比url传参安全。
      

  8.   

    string url=Request.UrlReferrer;
    好像这个能判断吧。以前也不知道是哪个。楼主试试