Asp.net mvc 在自定义属性中访问MVC5属性路由参数?

Asp.net mvc 在自定义属性中访问MVC5属性路由参数?,asp.net-mvc,asp.net-web-api,custom-attributes,attributerouting,Asp.net Mvc,Asp.net Web Api,Custom Attributes,Attributerouting,我在使用MVC5和属性路由的WebAPI项目中遇到了一些问题 基本上,这就是我想要做的: [Route("Products/{CategoryId}")] [ClaimsAuthorize([{CategoryId}], ClaimsEnum.CanViewProducts)] public Products Get(){ ... } 其中[{CategoryId}]是我希望将CategoryId传递给属性处理程序的位置。CustomAttribute处理程序如下所示: public Cl

我在使用MVC5和属性路由的WebAPI项目中遇到了一些问题

基本上,这就是我想要做的:

[Route("Products/{CategoryId}")]
[ClaimsAuthorize([{CategoryId}], ClaimsEnum.CanViewProducts)]
public Products Get(){
  ...
}
其中[{CategoryId}]是我希望将CategoryId传递给属性处理程序的位置。CustomAttribute处理程序如下所示:

public ClaimsAuthorizeAttribute(string CategoryId, params ClaimsEnum[] requiredClaimTypes)
其中ClaimsAuthorize是覆盖Authorize属性的自定义属性

如何从自定义属性访问CategoryId参数?这可能吗?或者是否有其他方法将其传递给属性处理程序

这是伪代码,但描述了我的问题。我需要知道在处理授权时随请求URL传递的类别。我知道我可以使用标题,但如果可以的话,我想让URL中的内容保持可见


谢谢:

我最终使用了这种方法:

[受保护控制器]

[Route("Products/{CategoryId}")]
[ClaimsAuthorize(ClaimsEnum.CanViewProducts)]
public Products Get(){
  ...
}
ClaimsAuthorizeAttribute.cs

protected override bool IsAuthorized(HttpActionContext actionContext)
        {
_categoryId = actionContext.ControllerContext.RouteData.Values["CategoryId"].ToString();