2011-06-14 25 views
10

¿Cuál es la mejor manera de implementar el seguimiento del usuario a través de su sitio web cuando el uso de vistas Razor en ASP.NET MVC 3.seguimiento con ASP.NET MVC 3 y vistas de afeitar usuario

En formularios web que había puesto algo de código en la página maestra para usar una cookie y registrar cada url en mi sitio que una persona visita en una base de datos, pero no estoy seguro de dónde implementar este código en ASP.NET MVC.

Respuesta

20

Supongo que la mejor manera de hacerlo es crear un filtro de acción global y realizar un seguimiento de las visitas allí.

Crear un atributo del filtro acción:

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

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

registrarlo como un filtro global en GLOBAL.ASAX:

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

    RegisterGlobalFilters(GlobalFilters.Filters); 
} 

eso es todo. ¿Bonito?

+0

+1 primo que se tomó el tiempo para redactar hasta un ejemplo !! –

+1

Impresionante, exactamente lo que estaba buscando. Para cualquier persona que mire a su alrededor, puede usar 'HttpContext' para obtener las cosas' Request' y 'Response' a las que puede acceder en el Controller. 'context.HttpContext.Request.Url'. Supongo que así es como puedes obtener la URL, etc. – TankorSmash

+0

También hay string url = Request.RawUrl; – JoshYates1980

5

No haría nada de eso con las vistas de Razor.

Querrá construir un ActionFilter y adjuntarlo como GlobalFilter. Deja que haga todo el trabajo por ti.

More good reading...

+2

+1 porque proporcionó referencias para la lectura;) –

Cuestiones relacionadas