如何将传入的路径字符串(例如Products / GetProduct)映射到将被调用的Controller / Method(ProductsController,GetProduct方法)?
我的目标是检查ProductsContoller的一个实例,以找到放在GetProduct方法上的自定义属性。
一旦我知道我正在处理哪个类/方法,我就知道如何检查课程。
我曾考虑过拆分字符串,所以你最终得到了“Products”和“GetProducts”,然后我可以找到一个ProductsController,在其中,一个名为GetProducts的方法。
这可能有效,但似乎应该有更好的解决方案。有什么想法吗?
答案 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"];