2012-01-10 112 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

相关问题