【问题标题】:IActionFilter class can only find physical attributes, not ones added in GlobalFilters configIActionFilter 类只能找到物理属性,不能在 GlobalFilters 配置中添加
【发布时间】:2014-12-30 21:32:28
【问题描述】:

使用以下类:

[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public class OrderItemCountActionFilterAttribute : ActionFilterAttribute
{
}

public class OrderItemCountFilter : IActionFilter
{
    public void OnActionExecuting(ActionExecutingContext filterContext)
    {

    }

    public void OnActionExecuted(ActionExecutedContext filterContext)
    {
        var attribute = filterContext.ActionDescriptor.ControllerDescriptor.GetCustomAttributes(typeof(OrderItemCountActionFilterAttribute), true);
        var attribute2 = filterContext.ActionDescriptor.GetCustomAttributes(typeof(OrderItemCountActionFilterAttribute),true);
        if (attribute.All(o => o.GetType() != typeof (OrderItemCountActionFilterAttribute)))
        {
            return;
        }

        throw new Exception("It worked!");
    }

}

还有下面的FilterConfig:

public static class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters, Container container)
    {
        filters.Add(new HandleErrorAttribute());


        filters.Add(new OrderItemCountActionFilterAttribute());
        filters.Add(container.GetInstance<OrderItemCountFilter>();
    }
}

filterContext.ActionDescriptor.GetCustomAttributes(typeof(OrderItemCountActionFilterAttribute),true); 找不到全局添加的 OrderItemCountActionFilterAttribute。但是,如果我手动将其添加到操作中,则可以使用它。

我已经做了 2 天了,但我没有取得任何进展。我想知道这里是否缺少一些我可以访问的属性以访问全局添加的 OrderItemCountActionFilterAttribute。

【问题讨论】:

    标签: asp.net-mvc dependency-injection custom-attributes action-filter


    【解决方案1】:

    可通过GlobalFilters.Filters 访问 GlobalFilters 集合

    您可以使用如下代码在全局集合中找到您的属性:var filters = GlobalFilters.Filters.Select(v =&gt; v.Instance).OfType&lt;OrderItemCountActionFilterAttribute&gt;();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多