我有一个ActionLink,它调用我的公共ActionResult,我希望它返回到它被调用的页面,但是如何?
答案 0 :(得分:27)
你可以使用一些技巧。
最简单的是......
return Redirect(HttpContext.Request.UrlReferrer.AbsoluteUri);
AbsoluteUri可能无法为您提供所需的确切路径,但UrlReferrer应该具有您正在寻找的信息。 Redirect返回ActionResult的子类,因此它是一个有效的返回值。
另一个想法是将重定向位置基于存储的值。当您要在重定向之前发出多个请求时,这非常有用,例如,当您验证表单并在第一个响应上显示验证问题时。另一种情况是推荐人不是本地网站。在任何一种情况下,您的推荐人都不是您想要的,您需要从其他地方检索正确的位置。
具体实现包括在表单上使用隐藏的输入字段,会话状态,从路由数据中提取描述符值,或者甚至只是一个更常量的值,如HttpContext.Request.ApplicationPath。
祝你好运。答案 1 :(得分:0)
请记住,由于Web的无状态特性,您的ActionResult不会从您的ActionLink“调用”,因为它只是用户代理所请求的URL。
因此,您可以知道用户来自哪里的唯一真正“内置”方式是检查http请求标头以查看引用页面的内容:
string referrer = Request.Headers["referer"];
如果您要直接调用它,那么您将负责从此URL解析Action方法。请注意,此引荐来源可能不是您自己网站中的链接。