如何处理页面处理程序的RedirectToPage的引荐来源网址?

时间:2019-10-01 10:36:52

标签: asp.net-core redirect

我的情况很简单。

  • 我有一个“概述”页面,可以在其中创建布局。
  • 我有一个“添加”页面,我可以在其中输入基本信息。
  • 我有一个“编辑”页面,我可以在其中操纵细节
  • 我的MasterLayout的后退按钮利用了HttpContext.Request.Headers["Referer"]

屏幕截图位于“添加”页面上。

当我添加布局时,我想更改引荐来源网址,因此当我转发到./Edit引荐来源网址时,应将其设置为其他页面,而不是./Add-以google示例为例,但实际上它应该是“概述”页面。

我需要为此编写自定义中间件吗?

更新: 这不起作用-网址有效,但添加引荐来源网址则无效。

var linkGenerator = HttpContext.RequestServices.GetService<LinkGenerator>();
var url = linkGenerator.GetPathByPage("/LayoutEngine/Administration/Overview");

HttpContext.Response.Headers.Add("Referer", url);
HttpContext.Request.Headers["Referer"] = url;

enter image description here

1 个答案:

答案 0 :(得分:0)

HTTP标头仅对当前响应有效。设置重定向时,当前响应包含您的自定义标头,但是当浏览器遵循重定向位置时,这些标头不再存在,您需要将Overview值作为查询字符串发送到Editpage:

  .........
  var url = linkGenerator.GetPathByPage("/LayoutEngine/Administration/Overview");
  .........
  return RedirectToPage("./Edit", new{id = result.Result, returnUrl = url});