首页 > 解决方案 > 从 ActionFilterAttribute 中的 ActionContext 访问模型上的属性

问题描述

给定一个自定义ActionFilterAttribute ,有没有办法在重写的 OnActionExecuting 方法中使用HttpActionContext访问动作模型上的属性?

如果属性不是特定类型,我希望抛出异常。

例如:

存在一个名为 的自定义属性[CustomRequired]。如果模型上有任何用法[Required],则抛出异常。该模型应该使用[CustomRequired],而不是[Required]

public class ModelValidationAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        ValidateModelAttributes(actionContext);
    }

    private static void ValidateModelAttributes(HttpActionContext actionContext)
    {
        var attrs = actionContext.ActionDescriptor.GetParameters();
        foreach (var attr in attrs) 
        {
             // if attr is not type then throw exception
        }
    }
}

标签: c#asp.net.netasp.net-web-apiactionfilterattribute

解决方案


推荐阅读