Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 点击按钮重定向到页面_C#_Asp.net - Fatal编程技术网

C# 点击按钮重定向到页面

C# 点击按钮重定向到页面,c#,asp.net,C#,Asp.net,嗨,我正试图在点击按钮时重定向到上一页,但事情进展得不太顺利,这是我的代码: private string previousPage = string.Empty; protected void Page_Load(object sender, EventArgs e) { if( Request.UrlReferrer != null) { previousPage = Request.UrlReferrer.ToString(); Cros

嗨,我正试图在点击按钮时重定向到上一页,但事情进展得不太顺利,这是我的代码:

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值将更改为当前页面URL,并被发送回当前页面

我在这里做错了什么?我该如何纠正

编辑

我将代码包装如下:

if(!IsPostBack)
   {
       if( Request.UrlReferrer != null ) {
           previousPage = Request.UrlReferrer.ToString();
           CrossSideScriptingErrorCheck.Text = previousPage;
       }   
   }
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);
}
我被重定向到一个我没有创建的页面,并且有一个链接。页面上写着:

Object moved to here.

“here”是一个链接,当我点击它时,我被发送回页面,我按下按钮,你需要测试回发。当您单击该按钮时,页面将被发布回服务器,引用者将成为您所在的页面,并且您想要的值将被覆盖

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

当您有回发时,引用者是页面本身,因此这是预期的行为:-)

一种解决方案是采用如下方式:

if(!IsPostBack)
   {
       if( Request.UrlReferrer != null ) {
           previousPage = Request.UrlReferrer.ToString();
           CrossSideScriptingErrorCheck.Text = previousPage;
       }   
   }
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,以便在按下“上一步”按钮时可以使用它

你忘了把它放在
IsPostBack
里,它是这样工作的

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

这样的代码可以使用它…

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

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

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

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

如果(!IsPostBack()){}有点复杂,请尝试将其放入。你必须跟踪有效的推荐人(见下面我的答案)。我刚刚看到了编辑。请尝试我的答案。@skyfoot-同意。此外,Page.IsPostBack也没什么问题——它们都能工作。