重定向到按钮单击页面

时间:2012-11-29 16:56:30

标签: c# asp.net

您好我正在尝试通过按钮点击重定向到上一页,但事情进展不顺利这是我的代码:

private string previousPage = string.Empty;


protected void Page_Load(object sender, EventArgs e)
{
    if( Request.UrlReferrer != null)
    {
        previousPage = Request.UrlReferrer.ToString();
        CrossSideScriptingErrorCheck.Text = previousPage;
    }  
}
protected void BackButton_Click( object sender , EventArgs e )
{      
   Response.Redirect(previousPage);
}

当我第一次被定向到这个页面时,previousPage变量存储了正确的URL但是由于某种原因我点击按钮后,previousPage值变为curent page url并且我被送回了curent页面。

我在这里做错了什么,我该怎么做?

修改

我把代码包装成这样:

if(!IsPostBack)
   {
       if( Request.UrlReferrer != null ) {
           previousPage = Request.UrlReferrer.ToString();
           CrossSideScriptingErrorCheck.Text = previousPage;
       }   
   }

然后我被重定向到我没有创建并且有链接的页面。在页面上写着:

Object moved to here.

“这里”是一个链接,当我缩短它时,我会被送回我按下按钮的页面

5 个答案:

答案 0 :(得分:1)

您需要测试回发。当您单击该按钮时,页面将回发到服务器,并且引荐来源变为您所在的页面,并且您想要的值将被覆盖。

 private string previousPage = string.Empty;


protected void Page_Load(object sender, EventArgs e)
{
    if(!Page.IsPostBack)
    {
        if( Request.UrlReferrer != null)
        {
            previousPage = Request.UrlReferrer.ToString();
            CrossSideScriptingErrorCheck.Text = previousPage;
        }
    }  
}
protected void BackButton_Click( object sender , EventArgs e )
{      
   Response.Redirect(previousPage);
}

答案 1 :(得分:1)

当你有回发时,引用者就是页面本身,所以这是预期的行为: - )

一种解决方案是拥有这样的东西:

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack) Session["prev"] = Request.UrlReferrer.ToString();
    if(Session["prev"] == null) {some code that disables the back button goes here!}
}
protected void BackButton_Click( object sender , EventArgs e )
{      
   Response.Redirect(Session["prev"] as string);
}

这个答案起作用的原因和迄今为止发布的其他人没有,是因为我使用Session [“prev”]来记住最新的有效推荐人。所以诀窍是1)意识到当你有一个回发时,引用是页面本身的URL(OP做的)和2)记住最后一个非帖子引用URL,以便你可以在后退按钮时使用它按下。

答案 2 :(得分:0)

你忘记把它放在IsPostBack中,就像它的工作一样

if(!IsPostBack)
{
   if( Request.UrlReferrer != null)
    {
        previousPage = Request.UrlReferrer.ToString();
        CrossSideScriptingErrorCheck.Text = previousPage;
    }
}
像这样的代码可以使用它......

答案 3 :(得分:0)

当您单击按钮时,页面加载将在click事件之前执行,因此它将重置previousPage变量的值。你需要将它包装在支票中以确保它没有被回发,如下所示:

if (!IsPostBack) {
    previousPage = Request.UrlReferrer.ToString();
}

答案 4 :(得分:0)

我是最后一个回答,但是第一个发表评论

protected void Page_Load(object sender, EventArgs e)
{
 if(!IsPostBack)
 {   
  if( Request.UrlReferrer != null)
    {
        previousPage = Request.UrlReferrer.ToString();
        CrossSideScriptingErrorCheck.Text = previousPage;
    }  
  }
}