特定のメソッドを追加し、アクションを実行する前にそれらを実行したいと考えています。したがって、すべてのコントローラーが継承するこの BaseController を作成しました
public class BaseController : Controller
{
protected int promotionId = 0;
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
bool thereIsPromo = false;
if (filterContext.ActionParameters.Keys.Contains("promotionId"))
{
thereIsPromo = true;
}
var foo = filterContext.RouteData;
// TODO: use the foo route value to perform some action
base.OnActionExecuting(filterContext);
}
}
ご覧のとおり、ユーザーが URL でプロモーション ID をリクエストしたかどうかを確認したいと思います。問題は、これを機能させるために、すべてのアクションにパラメーターを追加する必要がありpromotionId
(すべてのアクションの署名を変更することを意味します)、それをしたくないということです。
デフォルトのアクション メソッドをオーバーライドし、オプションのパラメータを追加してすべてのアクションに追加する方法はありますか?
または、これを行うためのより良い方法はありますか?