2012-01-10 117 views
3

我有一個網站需要跟蹤來自其他註冊聯盟網站的推介。這些合作伙伴可以在我的網站中的重定向到任何網頁,並有自己的跟蹤參數追加到查詢字符串如:ASP.net MVC檢查查詢字符串參數對所有請求

http://www.somesite.com/Home/About?i=ABCDEFG&t=65DCEFC2-2B73-429C-BA23-C824BFD01844 

在我希望自己的網站首先檢查的「介紹人」對象是否已每個請求存儲在會話中。如果不是,則檢查這些參數的存在並保存相應的Introducer對象(如果未提供,則使用默認值)。我目前只在選定的控制器/操作中實現了這個功能,並且手動調用了代碼,但是它會自動發生 - 自定義路由處理程序會是最好的嗎?或者簡單地覆蓋控制器基類中的OnActionExecuting並在此處理?

+0

如果你的要求是*每*的要求,在我看來,以處理這將是一個自定義的路由處理,因爲你將有最好的地方否則爲每個控制器繼承一個基類。 – 2012-01-10 16:35:03

+0

@Robert Harvey - 爲每個控制器繼承一個基類是否有缺點? – Macros 2012-01-10 16:37:38

+0

主要造成不便。從最佳實踐的角度來看,這是一個路由問題,應該在路由中處理。 – 2012-01-10 16:38:50

回答

3

創建一個Action Filter

您可以訪問動作過濾器中的所有路由數據,並執行您需要的任何操作。你可以將它作爲一個全球性的過濾器在您的Global.asax

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
{ 
    filters.Add(new CustomFilter()); 
} 
+0

是的......這可能是正確的做法。有一個在這裏創建一個自定義'AuthorizationFilter'的例子:http://stackoverflow.com/questions/2322366 – 2012-01-10 16:47:46

+0

註冊爲一個全局過濾器...這是我想念的一點,謝謝! – Macros 2012-01-10 16:49:09

相關問題