2012-11-29 119 views
0

你好我想重定向到以前的页面上点击按钮,但事情不会这么好这里是我的代码:重定向到按钮页点击

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页面url,然后我将被发回到curent页面。

我在这里做错了什么,我该如何正确使用它?

编辑

我包这样的代码:

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

,我得到重定向到一个网页,我没有创建并具有link.On页写的是:

Object moved to here. 

“这里”是一个链接,当我把它粘上去时,我回到页面我按下按钮

+0

尝试把在如果( !IsPostBack()){} – sajanyamaha

+0

这有点复杂。您必须跟踪有效的推荐人(请参阅下面的答案)。 –

+0

我刚看到编辑。请尝试我的答案。 –

回答

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,这样你可以在后退按钮时使用它按下。

+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); 
} 
+0

其IsPostBack .............. –

+0

苛刻地得到一个投票。 – skyfoot

+0

@skyfoot - 同意。此外,Page.IsPostBack没有问题 - 它们都可以工作。 – Darren

0

你忘了把它放在IsPostBack使y其工作这样

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

这样的代码与它的工作...

0

当您点击此按钮,页面加载之前执行点击事件,所以它会重置previousPage变量的值。你需要用它进行检查,以确保它不被贴后背,就像这样:

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

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

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