2014-03-03 2 views
1

사용자가 각기 다른 대상을 클릭 할 수있는 링크가 4 개 있지만 컨트롤러에있는 각 ActionResult에 몇 가지 검사를 실행하고 리디렉션하는 필터가 있습니다. 필요한 양식이있는 페이지 클릭 한 링크를 캡처하고 세션에 저장하는 방법을 알아 내려고 노력하고 있습니다. 사용자가 페이지를 방문 할 때 필터가 리디렉션 될 때 페이지를 다시 만들 수 있습니다./페이지로 이동하려고했습니다. 나는 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

당신은 filterContextHttpContext를 사용할 수 있습니다. 여기서 Request 속성은 HttpRequestBase이고 브라우저에서 정확한 URL을 얻으려면 RawUrl이고 구문 분석 된 액션 및 컨트롤러를 가져 오는 다른 속성이 있습니다.

+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

관련 문제