Làm cách nào để lấy URL liên kết giới thiệu trong hành động ASP.NET MVC?


88

Làm cách nào để lấy 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 trở lại trang trước khi bạn gọi một hành động.


5
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 thông tin đó.
belugabob 24/09/09

Câu trả lời:


148

Bạn cũng có thể sử dụng Request.UrlReferrerđể lấy URL giới thiệu nếu bạn không muốn truy cập Request.ServerVariablestrực tiếp vào từ điển.


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

Request.UrlReferrerthực sự là URI nhưng từ đó bạn có thể nhận được mọi thứ bạn cần liên quan đến URL liên kết giới thiệu. (Tìm hiểu thêm về URI so với URL: stackoverflow.com/questions/176264/… ).
Miguel


8

Bạn có thể sử dụng cái 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 yêu cầu.
Jace Rhea

3

Bạn có thể chuyển url liên kết giới thiệu đến viewModel, theo tôi thì đó là cách tiếp cận tốt hơn sau đó chia sẻ qua trạng thái, hãy thử như 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(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
huh, không bao giờ nhận ra dấu gạch dưới tự nó là một tên biến hợp lệ. Làm thế nào 'cơn đó.
BVernon

@BVernon Câu hỏi thực sự là tại sao mọi người lại sử dụng nó theo cách đó. Quy ước duy nhất mà tôi biết về một dấu gạch dưới duy nhất cho tên là để biểu thị rằng đó chỉ là một trình giữ chỗ cho một biến mà bạn không muốn hoặc không cần.
Daniel

@Daniel Tôi đồng ý, đã sửa
Andrey Burykin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.