如何在 ASP.NET MVC 操作中获取引荐来源网址?
Posted
技术标签:
【中文标题】如何在 ASP.NET MVC 操作中获取引荐来源网址?【英文标题】:How do I get the referrer URL in an ASP.NET MVC action? 【发布时间】:2010-12-01 01:37:47 【问题描述】:我正在尝试在您调用操作之前重定向回页面。
【问题讨论】:
请记住,并非所有用户代理(AKA 浏览器)都会发送引荐来源网址信息,有些甚至可能伪造。 【参考方案1】:如果您不喜欢直接访问Request.ServerVariables
字典,也可以使用Request.UrlReferrer
来获取引用URL。
【讨论】:
这正是我所需要的。谢谢你,兄弟!Request.UrlReferrer
实际上是 URI,但您可以从那里获得有关引荐来源网址的所有信息。 (有关 URI 与 URL 的更多信息:***.com/questions/176264/…)。【参考方案2】:
Request.ServerVariables["http_referer"]
应该这样做。
【讨论】:
【参考方案3】:你可以用这个
filterContext.RequestContext.HttpContext.Request.UrlReferrer.AbsolutePath
【讨论】:
这可以在过滤器上下文中工作,但不能在问题所要求的操作上下文中工作。【参考方案4】:你可以将referrer url传递给viewModel,在我看来这比通过状态分享更好,试试吧:
public interface IReferrer
String Referrer get; set;
...
public static MvchtmlString HiddenForReferrer<TModel>(this HtmlHelper<TModel> htmlHelper) where TModel : IReferrer
var str = htmlHelper.HiddenFor(hh => hh.Referrer);
var referrer = HttpContext.Current.Request.UrlReferrer.AbsoluteUri;
return new MvcHtmlString(str.ToHtmlString().Replace("value=\"\"", String.Format("value=\"0\"", referrer)));
...
@Html.HiddenForReferrer()
【讨论】:
呵呵,从来没有意识到下划线本身就是一个有效的变量名。怎么样。 @BVernon 真正的问题是为什么有人会那样使用它。我所知道的唯一一个使用单个下划线作为名称的约定是表示它只是您不想要或不需要的变量的占位符。 @Daniel 我同意,已修复以上是关于如何在 ASP.NET MVC 操作中获取引荐来源网址?的主要内容,如果未能解决你的问题,请参考以下文章
使用文件操作方法时如何在 ASP.NET MVC 中获取文件的 ContentType