好的,我最终根据来自 Matt Tew 和 user850010 的信息弄清楚了我需要做什么。
自定义动作过滤器:
public class CheckForAd : ActionFilterAttribute {
public override void OnActionExecuted( ActionExecutedContext filterContext ) {
var data = filterContext.HttpContext.Request.QueryString["AdName"];
if( data != null ) {
HttpCookie aCookie = new HttpCookie( "Url-Referrer" );
aCookie.Value = data;
aCookie.Expires = DateTime.Now.AddDays( 2 );
filterContext.HttpContext.Response.Cookies.Add( aCookie );
}
base.OnActionExecuted( filterContext );
}
}
一旦我有了我的自定义操作过滤器,我就可以去Global.asax
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
...
filters.Add( new CheckForAd() );
}
这允许我从任何动作/控制器设置 cookie,而无需我装饰动作/控制器。这也不需要我的控制器从标准之外的任何东西派生Controller
(我不想忘记这一点,然后在需要时没有设置 cookie)。