2011-06-14 50 views
10

是什么在ASP.NET MVC使用剃刀意见何时实现整个网站的用户跟踪的最佳方式3.用户与ASP.NET MVC 3和剃刀意见跟踪

在网络表单,我把一些代码主页面使用cookie并记录我的网站上的每个人在数据库中访问的网址,但我不确定在ASP.NET MVC中实现此代码的位置。

回答

20

我想要做到这一点的最佳方法是创建一个全局动作过滤器,并跟踪访问那里。

创建一个动作过滤属性:

public class UserTrackingActionFilterAttribute : ActionFilterAttribute 
{ 
    public override void OnResultExecuting(ResultExecutingContext context) 
    { 
     base.OnResultExecuting(context); 

     //save url, userId from session, etc... 
    } 
} 

注册为全球ASAX全局过滤器:

protected void Application_Start() 
{  
    // Register global filter 
    GlobalFilters.Filters.Add(new UserTrackingActionFilterAttribute()); 

    RegisterGlobalFilters(GlobalFilters.Filters); 
} 

这就是全部。尼斯?

+0

+1 cuz你花时间起草了一个例子! – 2011-06-14 20:49:00

+1

太棒了,正是我在找的东西。对于任何人来说,你可以使用'HttpContext'来获取你可以在Controller中访问的'Request'和'Response'东西。 'context.HttpContext.Request.Url'。我想这就是你如何获得网址等。 – TankorSmash 2013-01-05 21:19:49

+0

还有字符串url = Request.RawUrl; – JoshYates1980 2014-09-11 21:21:24

5

我不会用剃刀视图去做任何事情。

您将需要构建一个ActionFilter并将其附加为GlobalFilter。让它为你做所有的工作。

More good reading...

+2

+1因为您提供了阅读的参考;) – 2011-06-14 20:50:36