代码之家  ›  专栏  ›  技术社区  ›  VinnyG

MVC3应用程序中的通用“后退”按钮

  •  1
  • VinnyG  · 技术社区  · 11 年前

    有没有一种好的方法可以在我的asp.net MVC3应用程序中创建一个通用的后退按钮?

    目前,我对每个按钮都有不同的操作,当有更多的可能性时,我会在Url中添加重定向到,这样我就可以重定向回这个Url。这不是最好的解决方案,因为我必须添加所有的可能性,而且我可能会忘记将其添加到特定的表单中。

    我还教过使用 History.Back 在js中,但有时它会重定向到一个表单,该表单会重定向回另一个表单(例如,如果没有铭文,则铭文列表会重定向到添加铭文,如果至少有一个铭文,则单击返回按钮会重定向到铭文列表,但如果没有铭文则会重定向到课程列表)。后退按钮有时也会关闭一个弹出窗口。

    也许它可能是BaseController中的某个东西,它会在 OnActionExecuting() 或者Global.asax中的某个东西,比如 GlobalFilter ?

    你知道我该怎么做吗?

    3 回复  |  直到 11 年前
        1
  •  3
  •   Oliver    11 年前

    你可以使用 Request.UrlReferrer 以方便地访问用户的来源。

    你可以有这样的东西:

    <button type="button" onclick="window.location='@Request.UrlReferrer.AbsoluteUri'" >Back</button>
    

    然而 UrlReferrer 如果用户已直接导航到该页面,则将不可用。

        2
  •  2
  •   Avtandil Kavrelishvili    11 年前
    <a class="back_button" href="@Request.UrlReferrer"><i class="icon-circle-arrow-left"></i>@ViewResources.ShipingLine.back</a>
    

    您可以使用href=“@Request.UrlReferrer”返回页面的第一步。

    我已经测试过了,效果很好。

    卡夫列什维利

        3
  •  1
  •   VinnyG    11 年前

    我最后做的是用javascript覆盖按钮:

        $('.cancel-btn').click(function(ev) {
            ev.preventDefault();
            history.back();
        });
    

    它工作得很好,即使是双重重定向,它也会返回到第一个页面,而不是重定向到最后一个页面的页面。由于这是一个应用程序,您必须先登录,所以您几乎总是有一个页面可以返回。