2009-09-24 19 views
72

ASP.NET MVCアクションでリファラーURLを取得するにはどうすればよいですか?私はアクションを呼び出す前に、ページにリダイレクトしようとしています。ASP.NET MVCアクションでリファラーURLを取得するにはどうすればよいですか?

+4

すべてのユーザーエージェント(AKAブラウザ)がリファラー情報を送信するわけではなく、一部のユーザーエージェントも偽装する可能性があることに注意してください。 – belugabob

答えて

123

Request.ServerVariables辞書に直接アクセスしたくない場合は、Request.UrlReferrerを使用して参照URLを取得することもできます。

+0

それは私が必要とするものです。ありがとう、兄さん! –

21
Request.ServerVariables["http_referer"] 

する必要があります。

6

あなたはViewModelににそれを渡す必要があります使用refferのURLを修正するには、この

filterContext.RequestContext.HttpContext.Request.UrlReferrer.AbsolutePath 
+2

これは、フィルタコンテキストでは動作しますが、質問で要求されたアクションコンテキストでは機能しません。 –

3

を使用することができますので、試してみてください。

public interface IReferrer 
{ 
    String Referrer { get; set; } 
} 

...

public static MvcHtmlString HiddenForReferrer<TModel>(this HtmlHelper<TModel> htmlHelper) where TModel : IReferrer 
{ 
    var str = htmlHelper.HiddenFor(_ => _.Referrer); 
    var referrer = HttpContext.Current.Request.UrlReferrer.AbsoluteUri; 
    return new MvcHtmlString(str.ToHtmlString().Replace("value=\"\"", String.Format("value=\"{0}\"", referrer))); 
} 

を...

@Html.HiddenForReferrer() 
+1

ハーフ、アンダースコア自体は有効な変数名ではありません。どうしたの? – BVernon

関連する問題