我想构建一个自定义过滤器属性,该属性将添加到控制器级别。如何获取当前正在调用的当前控制器,操作和参数名称?
示例:如果我发出POST请求:https://localhost:443/api/users/delete/3
我怎样才能进入我的属性(我不是在谈论url解析)
答案 0 :(得分:2)
@Kamo为第一部分提供了重复的问题,对于ID,请使用.ActionArguments
,例如:
public override void OnActionExecuting(HttpActionContext actionContext)
{
var id = (int)actionContext.ActionArguments["id"];
ActionArguments是一个字典,因此如果arg是可选的,或者您正在为所有操作编写通用处理程序(例如,使用其参数/参数记录每个操作),您可以使用linq进行迭代。
这是框架提供的,在绑定之后,因此将匹配Action的参数 - 如果绑定与动作不匹配,那么即使在控制器级别应用,您的filterabbtribute也不会启动。您无法使用此功能查找您的路线与您的行为不匹配的原因。