ฉันจะรับ URL ผู้อ้างอิงในการดำเนินการ ASP.NET MVC ได้อย่างไร


89

ฉันจะรับ URL ผู้อ้างอิงในการดำเนินการ ASP.NET MVC ได้อย่างไร ฉันกำลังพยายามเปลี่ยนเส้นทางกลับไปที่เพจก่อนที่คุณจะเรียกการดำเนินการ


5
โปรดทราบว่าตัวแทนผู้ใช้ (เบราว์เซอร์ AKA) บางรายเท่านั้นที่จะส่งข้อมูลผู้อ้างอิงและบางรายอาจปลอมด้วยซ้ำ
belugabob

คำตอบ:


148

คุณสามารถใช้Request.UrlReferrerเพื่อรับ URL อ้างอิงได้เช่นกันหากคุณไม่ต้องการเข้าถึงRequest.ServerVariablesพจนานุกรมโดยตรง


มันคือสิ่งที่ฉันต้องการ ขอบใจนะ!
DmitryBoyko

Request.UrlReferrerเป็น URI จริง ๆ แต่จากตรงนั้นคุณจะได้รับทุกสิ่งที่คุณต้องการเกี่ยวกับ URL ผู้อ้างอิง (เพิ่มเติมเกี่ยวกับ URI และ URL: stackoverflow.com/questions/176264/… )
มิเกล


9

คุณสามารถใช้สิ่งนี้

filterContext.RequestContext.HttpContext.Request.UrlReferrer.AbsolutePath

2
สิ่งนี้ใช้ได้ในบริบทตัวกรอง แต่ไม่ใช่ในบริบทการดำเนินการตามที่คำถามถาม
Jace Rhea

3

คุณสามารถส่ง 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()

1
ฮะไม่เคยรู้ว่าขีดล่างเป็นชื่อตัวแปรที่ถูกต้อง วิธีการแข่งขันนั้น
BVernon

@BVernon คำถามจริงๆคือทำไมใคร ๆ ก็ใช้แบบนั้น หลักการเดียวที่ฉันทราบเกี่ยวกับขีดล่างเดียวสำหรับชื่อคือการบ่งบอกว่าเป็นเพียงตัวยึดสำหรับตัวแปรที่คุณไม่ต้องการหรือต้องการ
Daniel

@ Daniel ฉันเห็นด้วยแก้ไข
Andrey Burykin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.