Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

User tracking with ASP.NET MVC 3 and razor views

What's the best way to implement user tracking throughout your web site when using Razor views in ASP.NET MVC 3.

In webforms I'd put some code in the masterpage to use a cookie and log each url on my site that a person visits in a database, but I'm not sure where to implement this code in ASP.NET MVC.

like image 293
Nick Swan Avatar asked Jun 14 '11 20:06

Nick Swan


2 Answers

I guess the best way to do this is to create a Global Action Filter, and track visits there.

Create an action filter attribute:

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

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

Register it as a global filter in global asax:

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

    RegisterGlobalFilters(GlobalFilters.Filters);
}

That's all. Nice?

like image 98
Andrew Orsich Avatar answered Oct 30 '22 16:10

Andrew Orsich


I wouldn't do any of it with Razor views.

You will want to build an ActionFilter and attach it as a GlobalFilter. Let it do all the work for you.

More good reading...

like image 36
Chase Florell Avatar answered Oct 30 '22 17:10

Chase Florell