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也没什么问题——它们都能工作。