2011-06-14 17 views
10

Ne ASP.NET MVC Razor görüşlerini kullanırken web site genelinde kullanıcı izlemeyi uygulamak için en iyi yol webforms 3.Kullanıcı

Ben bazı kod koyardım ana sayfa bir çerez kullanmak ve siteme her URL'yi bir kişinin bir veritabanında ziyaret ettiğini günlüğe kaydetme, ancak bu kodu ASP.NET MVC'de nereye yerleştireceğimi bilmiyorum.

cevap

20

Bunu yapmanın en iyi yolunun bir Küresel Eylem Filtresi oluşturup orada ziyaretleri izlemektir.

bir eylem filtre özelliği oluşturun:

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

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

küresel asax küresel süzgeç olarak Kayıt: hepsi

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

    RegisterGlobalFilters(GlobalFilters.Filters); 
} 

. Güzel?

+0

+1 !! –

+1

Harika, tam olarak aradığım şey. Etrafa bakan herkes için, Denetleyicide erişebileceğiniz 'Request 've' Response' öğelerini almak için 'HttpContext' kullanabilirsiniz. 'Context.HttpContext.Request.Url'. URL'sini nasıl alabileceğinizi varsayalım. – TankorSmash

+0

Ayrıca string url = Request.RawUrl; – JoshYates1980

5

Hiçbiri Razor manzarası ile yapmazdım.

ActionFilter oluşturmak ve GlobalFilter olarak eklemek isteyeceksiniz. Bütün işi senin için yapalım. Eğer bir örnek yukarı taslak zaman aldı çünkü

More good reading...

+2

+1, çünkü okuma için bir referans sağladınız;) –