如何在ASP.NET MVC操作中获取引荐来源网址?


88

如何在ASP.NET MVC操作中获取引荐来源网址?我正在尝试重定向回页面,然后再调用操作。


5
请记住,并非所有用户代理(AKA浏览器)都会发送引荐来源信息,有些甚至会伪造该信息。
belugabob

Answers:




8

你可以用这个

filterContext.RequestContext.HttpContext.Request.UrlReferrer.AbsolutePath

2
这将在过滤器上下文中起作用,但不能在问题所要求的操作上下文中起作用。
杰斯·瑞亚

3

您可以将引荐来源网址传递给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()

1
嗯,从来没有意识到下划线本身就是一个有效的变量名。怎么回事。
BVernon

@BVernon真正的问题是为什么有人会那样使用它。我知道的唯一带有单个下划线的约定是表示它只是您不需要或不需要的变量的占位符。
丹尼尔(Daniel)

@Daniel我同意,已修正
Andrey Burykin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.