您好我正在尝试通过按钮点击重定向到上一页,但事情进展不顺利这是我的代码:
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.
“这里”是一个链接,当我缩短它时,我会被送回我按下按钮的页面
答案 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;
}
}
}