【问题标题】:Return to previous page in ASP.Net Core MVC返回 ASP.Net Core MVC 中的上一页
【发布时间】:2017-07-02 14:16:22
【问题描述】:

在我的客户详细信息页面中,我有一个按钮来编辑重定向到编辑页面的客户记录。我在编辑页面上有一个“返回客户详细信息”链接,我想将用户重定向回之前的客户详细信息页面。

<a asp-controller="Client" asp-action="Detail" asp-route-id="@Model.ClientID">Return to client detail</a>

目前这按预期工作,但需要额外的时间,因为它从头开始重新加载详细信息页面(即再次运行所有各种数据库查询)。由于用户实际上只是取消了编辑而没有对客户端的状态进行任何更改,因此我希望将用户返回到上一个详细信息页面,而无需再次执行控制器操作。

基本上我想模拟浏览器后退按钮(以提高响应能力),但我不确定如何实现这一点,或者这样做是否是一种好习惯。一些指导将不胜感激。

谢谢

【问题讨论】:

  • 点击链接执行javascript history.go(-1)。这将使浏览器在历史上倒退一步。
  • 那么再次运行查询有什么问题?

标签: asp.net-mvc razor asp.net-core


【解决方案1】:

你可以使用

<a href='javascript:history.go(-1)'>Return to client detail</a>

或点击

<a href="##" onClick="history.go(-1); return false;"> Return to client detail</a> 

【讨论】:

  • 我和发帖人有同样的问题——我想从一个细节返回到一个(“重”)搜索页面而不重新加载完整的搜索页面。此页面上的所有解决方案都执行完全重新加载(就像用户只需单击浏览器后退按钮一样)。有没有办法不重新加载整个页面就返回...?
【解决方案2】:

应该是这样的

<input type="button" onclick= "history.go(-1)" value="Return to client detail" />

【讨论】:

    【解决方案3】:

    我认为你需要摆脱通过控制器的想法。如果您需要使用关于 href 的 asp net core 代码快速浏览,可以试试这个。

     <a asp-area="" onclick="history.go(-1);">Return to client detail</a>
    

    【讨论】:

      【解决方案4】:

      你知道吗?我讨厌 JS,所以我会用后端写答案。 HTTP referer 是一个 HTTP 标头字段,用于标识链接到所请求资源的网页地址。所以只需阅读并传递给视图(永远记住 XSS 和验证,用户可以轻松地spoof HTTP 请求)

      在动作控制器中

      if(Request.Headers["Referer"] != null)
      {
          ViewData["Reffer"] = Request.Headers["Referer"].ToString();
      }
      

      在视图中(剃刀)

      @if(!string.IsNullOrWhiteSpace(ViewData["Reffer"]))
      {
          <a href="@ViewData["Reffer"]">Return to client detail</a>
      }
      

      【讨论】:

      • 我试过这个,虽然它都钩在一起了,但它并没有解决问题,因为当点击超链接时,相应的控制器动作仍然被调用
      • 我也不是很喜欢 JS,但它更简单,因此更喜欢它而不是后端解决方案是非常有意义的,它还可以让你做一些类似参考网站的事情到以前的等
      【解决方案5】:

      对于IActionResult,您可以使用此代码:

      public IActionResult Test()
      {
          return Redirect(Request.Headers["Referer"].ToString());
      }
      

      【讨论】:

        【解决方案6】:

        使用 Request.Headers["Referer"] 的注意事项 - 如果有人出于某种原因刷新目标页面,Request.Headers["Referer"] 将为空。 尽管页面刷新,但使用 history.go(-1) 会产生预期的行为。

        【讨论】:

          猜你喜欢
          • 2012-04-04
          • 2020-09-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多