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.
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?
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...