2009-09-24 49 views
72

Làm cách nào để nhận URL liên kết giới thiệu trong hành động ASP.NET MVC? Tôi đang cố gắng chuyển hướng quay lại trang trước khi bạn gọi một hành động.Làm cách nào để nhận URL liên kết giới thiệu trong hành động ASP.NET MVC?

+4

Hãy nhớ rằng không phải tất cả tác nhân người dùng (trình duyệt AKA) sẽ gửi thông tin liên kết giới thiệu và một số thậm chí có thể giả mạo nó. – belugabob

Trả lời

123

Bạn cũng có thể sử dụng Request.UrlReferrer để nhận URL giới thiệu nếu bạn không muốn truy cập trực tiếp từ điển Request.ServerVariables.

+0

Đó chính xác là những gì tôi cần. Cảm ơn người anh em! –

21
Request.ServerVariables["http_referer"] 

Nên làm.

6

Bạn có thể sử dụng này

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

Điều này sẽ hoạt động trong ngữ cảnh bộ lọc, nhưng không hoạt động trong ngữ cảnh hành động như câu hỏi được yêu cầu. –

3

Để khắc phục sử dụng url reffer bạn nên vượt qua nó để ViewModel, hãy thử vậy:

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

huh, không bao giờ nhận ra gạch dưới của chính nó là một tên biến hợp lệ. Làm thế nào 'bout đó. – BVernon

Các vấn đề liên quan