在OnActionExecuting for Web API调用期间 - 如何从路径字符串映射到控制器/操作类以读取操作属性

时间:2014-05-17 15:33:40

标签: c# asp.net-web-api

如何将传入的路径字符串(例如Products / GetProduct)映射到将被调用的Controller / Method(ProductsController,GetProduct方法)?

我的目标是检查ProductsContoller的一个实例,以找到放在GetProduct方法上的自定义属性。

一旦我知道我正在处理哪个类/方法,我就知道如何检查课程。

我曾考虑过拆分字符串,所以你最终得到了“Products”和“GetProducts”,然后我可以找到一个ProductsController,在其中,一个名为GetProducts的方法。

这可能有效,但似乎应该有更好的解决方案。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您可以使用以下命令获取操作的实际控制器实例和属性:

public class Somefilter : ActionFilterAttribute
    {
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            var controller = actionContext.ControllerContext.Controller;
            var someFilterattributes = actionContext.ActionDescriptor.GetCustomAttributes<Somefilter>()
            var otherAttributes = actionContext.ActionDescriptor.GetCustomAttributes<Other>()
        }
    }

其他是对行动的其他过滤器。

答案 1 :(得分:0)

您可以使用 OnActionExecuting 方法中的以下代码获取控制器名称

var controller = actionContext.Request.GetRouteData().Values["controller"];