我想添加某些方法,并希望在执行任何操作之前执行它们。所以我创建了这个 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
我的所有操作添加一个参数(意味着更改我所有操作的签名),我不想这样做。
有没有办法覆盖默认操作方法并向其添加可选参数,以便将其添加到我的所有操作中?
还是有更好的方法来做到这一点?