【问题标题】:pick url of previous before page选择前一页的网址
【发布时间】:2011-03-22 09:23:19
【问题描述】:

我有三页,..说第1页,第2页,第3页。

用户单击 Page1 中的链接并重定向到 Page2 填写表单并 sumit 重定向到 page3(Thankyou.aspx)

我想在 Page3 中放置一个 OK 按钮,该按钮应该重定向到 Page1。

我不能硬编码,因为它应该是动态的

注意:第 1 页可以是任何其他页面,第 2 页可以是任何其他形式,但在第 3 页中,我想跟踪完成该过程的第一页。

我知道类似的东西:

HttpContext.Current.Request.UrlReferrer

但它会给你上一页而不是第一页。

能否实现。

提前致谢

【问题讨论】:

  • 您不想使用 WizardControl 吗?
  • 我猜不使用向导的原因是因为使用的页面的动态特性。虽然我同意,但一个好的设计可能会使用具有 UserControls 形状的动态加载表单的向导控件。

标签: asp.net


【解决方案1】:

如果您愿意,您也可以使用 javascript 来执行此操作。你可以像这样直接把它挂在你的 Ok 按钮上:

btnOk.Attributes.Add("onClick", "javascript:history.go(-2); return false;");

或者您可以使用ClientScriptManager(来自MSDN)在您的页面上注册它:

    // Define the name and type of the client scripts on the page.
    String csname = "GoBackScript";
    Type cstype = this.GetType();          

    // Get a ClientScriptManager reference from the Page class.
    ClientScriptManager cs = Page.ClientScript;

    // Check to see if the startup script is already registered.
    if (!cs.IsStartupScriptRegistered(cstype, csname))
    {
        String scriptText= "<script type=\"text/javascript\">" +
               "window.history.go(-2);</" + "script>";     
        cs.RegisterStartupScript(cstype , csname, scriptText);
    }

【讨论】:

  • +1 不错的答案。我建议你稍微编辑一下,只在 OK 按钮的点击事件上调用 history.go 方法。另外,请注意,如果您使用 ClientScriptManager.RegisterStartupScript 方法,则不需要包含脚本标签:msdn.microsoft.com/en-us/library/z9h4dk8y.aspx
【解决方案2】:

最简单的方法是将 page1 url 存储在用户的会话缓存中

Session["page1"] = HttpContext.Current.Request.UrlReferrer

然后,当您到达 page3 时,您可以访问它。确保在使用后将其从会话缓存中删除,以确保您永远不会获得任何旧的 url。

【讨论】:

  • 你是对的,但如果你看到我的帖子,它说 Page1 可以是任何其他 PageX,所以只有我在 Page3 中进行了一些编码,这对所有人来说都是最后一页。那么,如何在Page3中处理它
猜你喜欢
  • 1970-01-01
  • 2020-09-30
  • 1970-01-01
  • 1970-01-01
  • 2013-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多