2014-03-03 48 views
1

我有4個鏈接用戶可以點擊與每個目標不同,但我有一個過濾器應用到控制器中的每個ActionResult運行一些檢查,並將它們重定向到具有所需表格的頁面。我試圖找出一種方法來捕獲點擊鏈接並將其存儲在Session中,這樣當用戶登錄頁面時,過濾器會重定向到我可以創建一個鏈接回他/他打算去的頁面。我嘗試了Request.UrlReferrer,但是這種簡單的捕獲用戶在點擊鏈接時所在頁面的URL。找出用戶點擊ASP.Net MVC

控制器:

[NetGalFilter] 
public ActionResult Transactions() 
{ 
    return View(); 
} 

篩選:

public class NetGalFilter : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     var Controller = filterContext.Controller as Sprague.RTS.WebUI.Controllers.BaseController; 

     if (HttpContext.Current.Session["HasConfirmed"] == null && Controller.TerminalUserData.IsNetGallonTerminal) 
     { 
      filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "DataEntry", action = "ConversionFactors" })); 
     } 

     base.OnActionExecuting(filterContext); 
    } 
} 
+0

'Request.Url'不會給你你需要的東西嗎? –

+0

Request.Url給你當前的URL,所以沒有它。 – Matthew

回答

1

可以在filterContext使用HttpContext。您有Request屬性,其類型爲HttpRequestBase,並且具有RawUrl以從瀏覽器中獲取確切的URL以及其他屬性以獲取已解析的Action和控制器。

+0

我不確定你在這裏得到什麼。 'Request.UrlReferrer'沒有給我正確的URL。我也嘗試過'filterContext.HttpContext.Request.UrlReferrer',但是這並沒有給出點擊鏈接的URL來觸發過濾器,它只給出了用戶點擊鏈接時所在的URL。 – Matthew

+0

我寫了'RawUrl',所以'filterContext.HttpContext.Request.RawUrl'。我沒有提到'UrlReferrer',你應該閱讀[UrlReferrer](http://msdn.microsoft.com/en-us/library/system.web.httprequest.urlreferrer(v = vs.110).aspx)上的文檔以明白它做了一些完全不同的事 – peter

+1

對不起,我誤解了你的帖子。我測試了'RawUrl',它給了我需要的數據。非常感謝你。 – Matthew