Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取筛选器属性中的控制器、操作、参数_C#_Asp.net Web Api2_Asp.net Web Api Routing - Fatal编程技术网

C# 获取筛选器属性中的控制器、操作、参数

C# 获取筛选器属性中的控制器、操作、参数,c#,asp.net-web-api2,asp.net-web-api-routing,C#,Asp.net Web Api2,Asp.net Web Api Routing,我想构建一个自定义过滤器属性,该属性将添加到控制器级别。如何获取当前正在调用的当前控制器、操作和参数名称 示例:如果我向:https://localhost:443/api/users/delete/3 我如何进入我的属性(这里我不是在谈论url解析) 控制器=用户 操作=删除 id=3 @Kamo为第一部分提供了重复问题,对于ID,使用。ActionArguments,例如: public override void OnActionExecuting(HttpActionContext

我想构建一个自定义过滤器属性,该属性将添加到控制器级别。如何获取当前正在调用的当前控制器、操作和参数名称

示例:如果我向:
https://localhost:443/api/users/delete/3

我如何进入我的属性(这里我不是在谈论url解析)

  • 控制器=用户
  • 操作=删除
  • id=3

    • @Kamo为第一部分提供了重复问题,对于ID,使用
      。ActionArguments
      ,例如:

       public override void OnActionExecuting(HttpActionContext actionContext)
       {
           var id = (int)actionContext.ActionArguments["id"];
      
      ActionArguments是一个字典,因此如果arg是可选的,或者您正在为所有操作编写一个通用处理程序,那么您可以使用linq进行迭代(例如,使用其参数/参数记录每个操作)


      这是由框架提供的,在绑定后,因此将匹配操作的参数-如果绑定与操作不匹配,那么即使在控制器级别应用FilterableAttribute,也不会生效。您不能使用此选项来查找路由与操作不匹配的原因。

      您想创建一个筛选器或属性吗?@Ramesh基本上是一个筛选器属性:)@Kamo:seams这里的问题回答了我的前两个与控制器和操作相关的问题。id参数如何?@user2818430-我目前没有可用的VS,但我相信
      filterContext
      中有
      RoutedData
      或类似此属性的内容,可以提供有关路由值的其他信息。另请参阅以获取和发布参数。